retries rails perform now ruby-on-rails ruby ruby-on-rails-3 sidekiq

ruby on rails - rails - Rieles: ¿Cómo reiniciar sidekiq?



sidekiq redis (4)

  1. Escriba el siguiente comando: ps -ef | grep sidekiq Esto le da a process_id y otros detalles de la ejecución del proceso sidekiq en segundo plano.
  2. Copie process_id y use el siguiente comando: kill process_id
  3. Use el siguiente comando para iniciar sidekiq nuevamente en segundo plano con la opción -d: paquete exec sidekiq -d -L log / sidekiq.log

Estoy usando la gema sidekiq para ejecutar llamadas API en segundo plano. Corrí sidekiq en el proceso Daemon como:

bundle exec sidekiq -d

Ahora hice algunos cambios en mi método, por lo que quiero reiniciar sidekiq. Intenté matar al sidekiq usando el siguiente comando:

kill -9 process_id

pero no está funcionando Quiero saber el comando para reiniciar el proceso de sidekiq. Si tienes alguna idea por favor compartir conmigo.

Probé el siguiente comando también:

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


Comienzo:

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

donde -d demonize, -P pid file, -L log file.

Detener:

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

donde 0 es el número de segundos a esperar hasta que Sidekiq salga.


Entonces, una vez que encuentre que proces_id, use el comando a continuación, evitará que los trabajadores obtengan nuevos trabajos y terminarán los trabajos existentes.

kill -USR1 [PROCESS_ID]

Después de eso puedes matarlos

kill -TERM [PROCESS_ID]

También hay una página en sidekiq / wiki sobre esto, llamada Señales.

[editar]

Here está la página de la señal.

[editar]

Ver video


Para mantener el demonio en funcionamiento, definitivamente debería tener un buen manejo de errores en las clases de HardWorker, pero también puede usar el comando a continuación para reiniciar los corredores de Sidekiq si no se encuentran en los procesos del sistema.

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

Básicamente, esto busca el PID usando ps aux | grep sidekiq | grep -v grep | awk ''{print $2}'' ps aux | grep sidekiq | grep -v grep | awk ''{print $2}'' ps aux | grep sidekiq | grep -v grep | awk ''{print $2}'' y luego lo almacena en la variable x . Luego, si está vacío, ejecutará un proceso de control lateral demoníaco.

Puedes meter a este tipo en un trabajo cron o algo así. Pero si sus trabajos fallan continuamente, definitivamente querrá averiguar por qué.

EDITAR: Se agregó ruta para implementar desde cron.