2012-01-27 4 views
5

Это дополнительный вопрос к моему предыдущему вопросу: Cancel an already executing task with Celery?Джанго сельдерей прекратить подпроцессы задачи по

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

действительно убить мой работник, выполняющий задачу. У меня теперь возникает проблема, что в моей задаче выполняются подпроцессы, которые не умирают, когда задача отменяется.

Это сообщение от dmarkey http://dmarkey.com/wordpress/2011/09/07/killing-child-processes-of-celery-tasks-on-a-timeout/ ближе всего, что я видел, что я хочу сделать, за исключением того, я не хочу, чтобы убить на тайм-аут, а когда я отзывать() с TASK_ID.

Кажется, что все, что у меня есть (String) task_id, есть, чтобы убить такие подпроцессы? Спасибо за вашу помощь. У меня не так много опыта в этом, как хотелось бы. Навигация по документам - это вызов!

ответ

3

Попробуйте установить обратный вызов для on_revoked, который убивает дочерние процессы задачи.

+0

Есть ли хороший способ получить pid (ы) для запуска подпроцессов? – dcoffey3296

+0

Возможно, но я не знаю об этом. Может быть, вы сможете отслеживать их, когда они созданы? Изменить: на самом деле, код в вашей ссылке (по dmarkey) кажется, что он может работать, или? – aganders3

Смежные вопросы