Ceci est une question de suivi à ma question précédente: Annuler une tâche déjà en cours d'exécution avec Celery?
celery.task.control.revoke({task_id}, terminate=True)
tue effectivement mon travailleur exécutant la tâche. J'ai maintenant le problème que ma tâche exécute des sous-processus qui ne meurent pas lorsque la tâche est révoquée.
Ce post par dmarkey http://dmarkey.com/wordpress/2011/09/07/killing-child-processes-of-celery-tasks-on-a-timeout/ C’est ce qui se rapproche le plus de ce que je vois de ce que je veux faire, sauf que je ne veux pas tuer à l’expiration du délai d’attente, mais plutôt lorsque je révoque () avec le task_id.
Semblant que tout ce que j'ai est le (String) task_id,est-il possible de tuer de tels sous-processus? Merci pour votre aide - Je n’ai pas autant d’expérience que je le souhaiterais, naviguer dans la documentation est un défi!
Réponses:
3 pour la réponse № 1Essayez de définir un rappel pour on_revoked
qui tue les processus enfants de la tâche.