我有一个使用Celery(最新)的Django 1.7项目。我有一个REST API接收一些参数,并以编程方式创建PeriodicTask。为了测试,我使用了一段时间:
periodic_task, _= PeriodicTask.objects.get_or_create(name=task_label, task=task_name, interval=interval_schedule)
我在某处存储了对此任务的引用。我开始吃芹菜:
python manage.py celery beat
和一名工人:
python manage.py celery worker --loglevel=info
我的任务就像我在工人的输出中看到的那样运行。
我已将结果设置为后端:
CELERY_RESULT_BACKEND = 'djcelery.backends.database:DatabaseBackend'
然后,我可以使用 TaskMeta 模型检查任务结果。那里的对象包含task_id(与使用.delay()或.apply_async()调用任务时相同),状态,结果,一切,美观。
但是,我无法在 PeriodicTask 对象和 TaskMeta 之间找到连接。
PeriodicTask具有任务属性,但它只是任务名称/路径。 id只是一个连续的数字,而不是来自 TaskMeta 的task_id,我真的需要能够找到以 TaskMeta为 PeriodicTask 执行的任务所以我可以对状态进行一些监控。 TaskMeta 没有任何其他值可以让我识别哪个任务运行(因为我会有几个任务),所以至少我可以给出上次执行的状态。
我已经检查了所有Celery文档,但是到目前为止还没有解决方案。
非常感谢任何帮助。
由于
答案 0 :(得分:0)
您可以使用命令行
运行服务以监控任务 python manage.py celerycam --frequency=10.0