django celery 终止任务的子进程

Posted

技术标签:

【中文标题】django celery 终止任务的子进程【英文标题】:django celery terminate task's subprocesses 【发布时间】:2012-02-20 20:29:14 【问题描述】:

这是我上一个问题的后续问题: 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 revoke() 时杀死。

似乎我只有(字符串)task_id,有没有办法杀死这样的子进程?感谢您的帮助 - 我在这方面的经验并不如我所愿,浏览文档是一项挑战!

【问题讨论】:

【参考方案1】:

尝试为on_revoked 设置一个回调来杀死任务的子进程。

【讨论】:

有没有一个好方法来获取运行子进程的 pid(s)? 可能,但我不知道。也许您可以在创建它们时跟踪它们?编辑:实际上,您链接中的代码(由 dmarkey 提供)似乎可以正常工作,或者?

以上是关于django celery 终止任务的子进程的主要内容,如果未能解决你的问题,请参考以下文章

Django--队列2

Django使用Celery异步任务队列

Django 学习之Celery(芹菜)

如何使用 celery 守护进程调用 celery 任务

Django 1.9 + celery + django-celry 实现定时任务

Django celery 和 celery-beat 守护进程脚本错误