ruby on rails - rails - Rieles: ¿Cómo reiniciar sidekiq?
sidekiq redis (4)
- 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.
- Copie process_id y use el siguiente comando: kill process_id
- 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.