我使用以下代码撤销了所有任务。
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()返回相同的任务,然后撤销所有。 除了撤销之外,我怎样才能获得任务列表?
答案 0 :(得分:0)
每个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']