我想有一个地方可以观看所有待处理的任务。
我不是在谈论作为任务的注册函数/类,而是我可以显示的实际计划作业:名称、task_id、eta、worker 等。
使用 Celery 2.0.2 和 djcelery,我在文档中找到了“inspect”。我试过了:
from celery.task.control import inspect
def get_scheduled_tasks(nodes=None):
if nodes:
i = inspect(nodes)
else:
i = inspect()
scheduled_tasks = []
dump = i.scheduled()
if dump:
for worker, tasks in dump:
for task in tasks:
scheduled_task = {}
scheduled_task.update(task["request"])
del task["request"]
scheduled_task.update(task)
scheduled_task["worker"] = worker
scheduled_tasks.append(scheduled_task)
return scheduled_tasks
但它永远挂在dump = i.scheduled()
.
奇怪,因为否则一切正常。
使用 Ubuntu 10.04、django 1.0 和 virtualenv。