如何使用Celery制作包含所有待处理任务的仪表板?

时间:2010-07-28 21:01:33

标签: python django celery

我希望有一些地方可以看到所有的挂件任务。

我不是说已注册的函数/类作为任务,而是我可以显示的实际预定作业:name,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。

2 个答案:

答案 0 :(得分:4)

查看运行显示所有计划任务的Web服务器的celerymon。您必须使用-E标志运行芹菜来打开事件,这些事件会被放入队列并被celerymon守护程序拉出。

答案 1 :(得分:0)

尝试Flower - Celery监控工具。
这提供了非常有用的仪表板来监视排队的任务。

Flower - Celery monitoring tool