Esta es una pregunta de seguimiento a mi pregunta anterior: ¿Cancelar una tarea ya en ejecución con Celery?
celery.task.control.revoke({task_id}, terminate=True)
de hecho mata a mi trabajador ejecutando la tarea. Ahora tengo el problema de que mi tarea está ejecutando subprocesos que no mueren cuando se revoca la tarea.
Este post por dmarkey http://dmarkey.com/wordpress/2011/09/07/killing-child-processes-of-celery-tasks-on-a-timeout/ es lo más cercano que he visto a lo que quiero hacer, excepto que no quiero matar en el tiempo de espera, sino más bien cuando revoco () con el task_id.
Pareciendo que todo lo que tengo es el task_id (String),¿Hay alguna forma de matar a tales subprocesos? Gracias por su ayuda. No tengo tanta experiencia con esto como me gustaría, ¡navegar por los documentos es un desafío!
Respuestas
3 para la respuesta № 1Intente establecer una devolución de llamada para on_revoked
Eso mata los procesos secundarios de la tarea.