Estoy ejecutando apio a través de redis. Empiezo mi trabajador así:
celery multi start worker1 -A mypackage.tasks.tasks
celery multi v3.1.18 (Cipater)
> Starting nodes...
> [email protected]: OK
Y lo mato así:
celery multi kill worker1
celery multi v3.1.18 (Cipater)
> [email protected]: DOWN
Pero el trabajador sigue corriendo. No puedo iniciar el trabajador nuevamente:
celery multi start worker1 -A mypackage.tasks.tasks
celery multi v3.1.18 (Cipater)
> Starting nodes...
ERROR: Pidfile (worker1.pid) already exists.
Seems we're already running? (pid: 29369)
> [email protected]: OK
Si mato el proceso, todo está bien:
kill 29369
Pero eso es demasiado engorroso: necesito saber el PID. Cómoen realidad¿Matar al trabajador con la herramienta de línea de comando de apio?
Respuesta1
No hay forma de detener al trabajador con celery multi
una orden. Puede obtener PID del archivo pid o de la salida ps, por ejemplo
ps auxww | grep '[c]elery worker' | awk '{print $2}' | xargs kill
o
kill $(cat /path/to/worker.pid)