wake-up-neo.com

Rails: Wie starte ich sidekiq neu?

Ich verwende sidekiq gem, um API-Aufrufe im Hintergrund auszuführen. Ich lief Sidekiq im Daemon-Prozess wie:

  bundle exec sidekiq -d

Jetzt habe ich einige Änderungen an meiner Methode vorgenommen, also möchte ich sidekiq neu starten. Ich habe versucht, den Sidekiq mit dem folgenden Befehl zu beenden:

  kill -9 process_id 

aber es funktioniert nicht Ich möchte den Befehl zum Neustarten des Sidekiq-Prozesses kennen. Wenn Sie eine Idee haben, teilen Sie es mir bitte mit.

Ich habe auch den folgenden Befehl ausprobiert:

 sidekiqctl stop /path/to/pid file/pids/sidekiq.pid
21
Can Can

Wenn Sie also proces_id gefunden haben, verwenden Sie den folgenden Befehl, der die Arbeiter daran hindert, neue Jobs zu erhalten, und vorhandene Jobs beenden.

kill -USR1 [PROCESS_ID]

Danach kannst du sie töten

kill -TERM [PROCESS_ID]

Es gibt auch eine Seite in sidekiq/wiki, die sich Signale nennt.

[bearbeiten]

Hier ist die Signalseite.

[bearbeiten]

Überprüfen Sie Video

21
alexsmn

Start:

$ bundle exec sidekiq -d -P tmp/sidekiq.pid -L log/sidekiq.log 

wo -d demonize, -P pid-Datei, -L-Protokolldatei.

Halt:

$ bundle exec sidekiqctl stop tmp/sidekiq.pid 0
Sidekiq shut down gracefully.

wobei 0 die Anzahl der Sekunden ist, die gewartet werden soll, bis Sidekiq beendet wird.

41
hlcs

Um den Daemon weiter laufen zu lassen, sollten Sie auf jeden Fall eine gute Fehlerbehandlung in den HardWorker-Klassen haben. Sie können jedoch auch den folgenden Befehl verwenden, um die Sidekiq-Läufer neu zu starten, wenn sie nicht in den Systemprozessen gefunden werden.

x=`ps aux | grep sidekiq | grep -v grep | awk '{print $2}'`; [ "$x" == "" ] && cd /path/to/deploy && bundle exec sidekiq -d -L /path/to/deploy/log/sidekiq.log -C /path/to/deploy/config/sidekiq.yml -e production

Dies sucht im Grunde nach der PID mit ps aux | grep sidekiq | grep -v grep | awk '{print $2}' und speichert sie dann in der Variablen x. Wenn es leer ist, wird ein daemonisierter Sidekiq-Prozess ausgeführt.

Sie können diesen Kerl in einen Cronjob oder so etwas stecken. Wenn Ihre Jobs jedoch ständig versagen, möchten Sie auf jeden Fall herausfinden, warum.

BEARBEITEN: Pfad zum Bereitstellen von cron hinzugefügt.

4
Jonathan Reyes
  1. Geben Sie den folgenden Befehl ein: ps -ef | grep sidekiq Dies gibt process_id und andere Details zum Ausführen eines Sidekiq-Prozesses im Hintergrund.
  2. Kopieren Sie die Prozess-ID und verwenden Sie den folgenden Befehl: kill Prozess-ID
  3. Verwenden Sie den folgenden Befehl, um sidekiq im Hintergrund mit der Option -d erneut zu starten: bundle exec sidekiq -d -L log/sidekiq.log
0
user3133204