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