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
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
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.
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.