如何使用Celery制作一个包含所有待处理任务的仪表板?
我想找个地方可以查看所有待处理的任务。
我不是在说那些注册的函数或类作为任务,而是指那些实际安排好的工作,比如我想显示:名称、任务ID、预计完成时间、工作者等等。
我在使用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。
2 个回答
2
试试 Flower - 这是一个用来监控 Celery 的工具。
它提供了一个非常实用的仪表盘,可以用来监控排队的任务。
5
看看这个celerymon,它可以启动一个网页服务器,显示所有安排好的任务。你需要用 -E 这个参数来运行 celery,这样才能开启事件功能,这些事件会被放到你的队列里,然后由 celerymon 程序来提取。