celery:撤销后如何刷新预定的任务列表?

时间:2014-11-24 08:31:28

标签: redis scheduled-tasks celery

我使用以下代码撤销了所有任务。

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()返回相同的任务,然后撤销所有。 除了撤销之外,我怎样才能获得任务列表?

1 个答案:

答案 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']