Celery / Django:获取定期任务执行的结果

时间:2015-08-05 19:35:51

标签: python django celery django-celery

我有一个使用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文档,但是到目前为止还没有解决方案。

非常感谢任何帮助。

由于

1 个答案:

答案 0 :(得分:0)

您可以使用命令行

运行服务以监控任务
    python manage.py celerycam --frequency=10.0

更多细节: http://www.lexev.org/en/2014/django-celery-setup/