2013-06-20 11 views
27

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

+1

Ich gehe davon aus, dass mindestens ein Sidekiq-Arbeiter in der Produktion läuft? – cthulhu

+0

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

+1

Was ist in Ihren Protokollen? Siehst du sidekiq Prozess? (ps aux | grep sidekiq) Was ist in Ihrer Sidekiq-Konsole? – cthulhu

Antwort

25

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 
+0

So einfach, aber so richtig. In meinem speziellen Fall hatte ich die Worker-Datei falsch konfiguriert und es wurde der sidekiq-Prozess beendet. –

1

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.

+0

Das war tatsächlich der Fall für mich – Deano

1

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.

1

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.