Sidekiq hat im Entwicklungsmodus einfach perfekt funktioniert. Jetzt, wo ich versuche, es in der Produktion zu verwenden, sitzen alle Jobs nur in Enqueue und werden nie ausgeführt. Kann mir jemand in die richtige Richtung zeigen, wie ich dieses Problem lösen kann?Sidekiq Jobs stecken in Enqueue
Antwort
Bitte überprüfen Sie, ob sidekiq Prozess tatsächlich ausgeführt wird:
ps aux | grep sidekiq
Wenn es nicht ist, versuchen sidekiq im Vordergrund laufen erste und die Ausgabe überprüfen.
bundle exec sidekiq -e production
So einfach, aber so richtig. In meinem speziellen Fall hatte ich die Worker-Datei falsch konfiguriert und es wurde der sidekiq-Prozess beendet. –
Diese Antwort sieht relevant: Sidekiq not processing queue Wenn Sidekiq nicht über die Konfigurationsdatei erzählt (die eine andere Beschwörungsformel in der Produktion erfordern kann), dann kann es nicht die richtige Warteschlange verwendet werden.
Das war tatsächlich der Fall für mich – Deano
Meine Lösung:
1.) Schauen Sie sich die Sidekiq Web UI für Ihre Anwendung (das ist, wo Sie die Tatsache sehen, dass die Arbeitsplätze in eine Warteschlange eingereiht Zustand erhalten).
2.) manuell einen fehlerhaften Auftrag wiederholen
3.) Überprüfen Sie Protokolle auf dem Server ausgeführt Sidekiq:
(in der Regel ist dies in dem das Protokoll befinden wird, wenn sagen Sie dies auf Inszenierung tun)
Dies ist in der Regel eine detailliertere Fehlermeldung, warum Sidekiq keine eingereihten Jobs verarbeiten kann. In unserem Fall gab es eine Umgebungsvariable, die auf einen falschen Endpunkt für unsere Bereitstellungskonfiguration verweist.
In vielen Fällen für mich ist es, weil ich die Warteschlange für diesen bestimmten Dienst in config/sidekiq.yml
nicht ordnungsgemäß deklariert habe.
Ich gehe davon aus, dass mindestens ein Sidekiq-Arbeiter in der Produktion läuft? – cthulhu
Ja, ich glaube schon. Was genau meinst du? Ich habe Sidekiq gestartet, indem ich folgenden Befehl ausgeführt habe: bundle exec sidekiq -d -L/pfad/zu/log. Und es gibt einen asynchronen Aufruf an einen Mitarbeiter, den ich in meinem Rails-Code erstellt habe. – groffcole
Was ist in Ihren Protokollen? Siehst du sidekiq Prozess? (ps aux | grep sidekiq) Was ist in Ihrer Sidekiq-Konsole? – cthulhu