10

我想有一个地方可以观看所有待处理的任务。

我不是在谈论作为任务的注册函数/类,而是我可以显示的实际计划作业:名称、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。

4

2 回答 2

5

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

于 2010-12-27T20:49:22.270 回答
2

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

Flower - 芹菜监控工具

于 2016-03-30T13:14:18.113 回答