10

保留中のすべてのタスクを監視できる場所が必要です。

タスクとして登録された関数/クラスについて話しているのではなく、表示できる実際のスケジュールされたジョブ: 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 を使用しています。

4

2 に答える 2

5

スケジュールされたすべてのタスクを表示する Web サーバーを実行するcelerymonを見てください。-E フラグを指定して celery を実行してイベントを有効にする必要があります。イベントはキューに入れられ、celerymon デーモンによって取り出されます。

于 2010-12-27T20:49:22.270 に答える
2

Flower - セロリ監視ツールをお試しください。
これにより、キューに入れられたタスクを監視するための非常に便利なダッシュボードが提供されます。

Flower - セロリ監視ツール

于 2016-03-30T13:14:18.113 に答える