【发布时间】:2015-10-28 18:01:48
【问题描述】:
我有一个使用 Celery(最新)的 Django 1.7 项目。我有一个 REST API,它接收一些参数,并以编程方式创建一个 PeriodicTask。为了测试,我使用了几秒钟:
periodic_task, _= PeriodicTask.objects.get_or_create(name=task_label, task=task_name, interval=interval_schedule)
我将对此任务的引用存储在某处。我开始 celery beat:
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 有一个 task 属性,但它只是任务名称/路径。 id 只是一个连续的数字,而不是 TaskMeta 中的 task_id,我真的需要能够通过 TaskMeta 找到作为 PeriodicTask 执行的任务 所以我可以对状态进行一些监控。 TaskMeta 没有任何其他值可以让我确定运行的是哪个任务(因为我会有几个),所以至少我可以给出最后一次执行的状态。
我已经检查了 Celery 文档和这里的所有内容,但到目前为止还没有解决方案。
非常感谢任何帮助。
谢谢
【问题讨论】:
标签: python django celery django-celery