2012-01-27 30 views
5

Ésta es una pregunta de seguimiento a mi pregunta anterior: Cancel an already executing task with Celery?Django apio terminar subprocesos de trabajo

celery.task.control.revoke({task_id}, terminate=True) 

en efecto, matar a mi trabajador de ejecutar la tarea. Ahora tengo el problema de que mi tarea ejecuta subprocesos que no mueren cuando se revoca la tarea.

Este mensaje por dmarkey http://dmarkey.com/wordpress/2011/09/07/killing-child-processes-of-celery-tasks-on-a-timeout/ es el más cercano que he visto a lo que yo quiero hacer, excepto que no quiero matar el tiempo de espera, sino más bien cuando revoco() con el task_id.

Parece que todo lo que tengo es la (cadena) task_id, ¿hay alguna forma de matar tales subprocesos? Gracias por su ayuda. No tengo tanta experiencia con esto como me gustaría, ¡navegar por los documentos es un desafío!

Respuesta

3

Intente configurar una devolución de llamada para on_revoked que elimina los procesos secundarios de la tarea.

+0

¿Hay una buena manera de obtener el pid (s) para ejecutar subprocesos? – dcoffey3296

+0

Posiblemente, pero no estoy al tanto. ¿Tal vez podrías hacer un seguimiento de ellos cuando se crean? Editar: en realidad, el código en su enlace (por dmarkey) parece que podría funcionar, o? – aganders3

Cuestiones relacionadas