我使用以下代码撤销了所有任务。
from celery.task.control import inspect
from celery.task.control import revoke
i = inspect()
queues = i.scheduled()
keys = queues.keys()
all_tasks = []
tasks = []
if len(keys) > 0:
print keys[0]
all_tasks = queues[keys[0]]
for task in all_tasks:
revoke(task['request']['id'], terminate=True)
但是inspect()。scheduled()在我全部撤销之前会返回相同的任务。除吊销外,我如何获得任务清单?
每个async_result对象都有status
显示任务状态的属性。因此,如果您有的列表,则可以执行此操作all_tasks
。
unrevoked_tasks = []
for task in all_tasks:
if task.status != 'REVOKED':
unrevoked_tasks += task
或更好地使用这样的列表理解
unrevoked_tasks = [task for task in all_tasks if task.status != 'REVOKED']
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句