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

e-s*_*tis 9 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  
Run Code Online (Sandbox Code Playgroud)

但它永远挂在上面dump = i.scheduled().

奇怪,因为否则一切正常.

使用Ubuntu 10.04,django 1.0和virtualenv.

Dav*_*eat 5

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