web-dev-qa-db-fra.com

Rails: Comment redémarrer sidekiq?

J'utilise sidekiq gem pour exécuter des appels d'API en arrière-plan. J'ai exécuté sidekiq dans Daemon process comme suit:

  bundle exec sidekiq -d

Maintenant que ma méthode a été modifiée, je souhaite redémarrer sidekiq. J'ai essayé de tuer le sidekiq en utilisant la commande ci-dessous:

  kill -9 process_id 

mais ça ne marche pas. Je veux connaître la commande pour relancer le processus sidekiq. Si vous avez une idée s'il vous plaît partager avec moi.

J'ai essayé la commande ci-dessous aussi:

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

Donc, une fois que vous avez trouvé proces_id, utilisez la commande ci-dessous, qui empêchera les travailleurs d'obtenir de nouveaux emplois et en finiront avec les emplois existants.

kill -USR1 [PROCESS_ID]

Après cela, vous pouvez les tuer

kill -TERM [PROCESS_ID]

Il existe également une page sur sidekiq/wiki à ce sujet, appelée Signals.

[modifier]

Ici est la page de signal.

[modifier]

Vérifier vidéo

21
alexsmn

Début:

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

-d démonise, -P fichier pid, -L fichier journal.

Arrêtez:

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

0 est le nombre de secondes à attendre jusqu'à la sortie de Sidekiq.

41
hlcs

Pour que le démon continue de fonctionner, vous devez absolument avoir une bonne gestion des erreurs dans les classes HardWorker, mais vous pouvez également utiliser la commande ci-dessous pour redémarrer les coureurs sidekiq s'ils ne se trouvent pas dans les processus système.

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

Cela recherche le PID en utilisant ps aux | grep sidekiq | grep -v grep | awk '{print $2}' et le stocke dans la variable x. Ensuite, s'il est vide, il lancera un processus sidekiq démonisé.

Vous pouvez coller ce gars dans un travail cron ou quelque chose. Mais si vos emplois échouent continuellement, vous voudrez certainement comprendre pourquoi.

EDIT: Ajout du chemin à déployer à partir de cron.

4
Jonathan Reyes
  1. Tapez la commande suivante: ps -ef | grep sidekiq.__ Ceci donne process_id et d'autres détails sur l'exécution du processus sidekiq en arrière-plan.
  2. Copiez id_processus et utilisez la commande suivante: kill id_processus
  3. Utilisez la commande suivante pour redémarrer sidekiq en arrière-plan avec l’option -d: bundle exec sidekiq -d -L log/sidekiq.log
0
user3133204