我有一个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
和一个worker:
python manage.py celery worker --loglevel=info
和我的任务运行,正如我在worker的输出中看到的。
我设置了结果后端:
CELERY_RESULT_BACKEND = 'djcelery.backends.database:DatabaseBackend'
有了它,我可以使用TaskMeta模型检查任务结果。那里的对象包含task_id(如果我用.delay()或.apply_async()调用任务,我会得到相同的对象),状态,结果,一切,漂亮。
然而,我找不到PeriodicTask对象和TaskMeta之间的连接。
PeriodicTask有一个task属性,但它只是任务名称/路径。id只是一个连续的数字,而不是来自TaskMeta的task_id,我真的需要能够找到作为PeriodicTask与TaskMeta执行的任务,所以我可以提供一些对状态的监控。TaskMeta没有任何其他值可以让我识别哪个任务运行(因为我将有几个),所以至少我可以给出最后一次执行的状态。
我已经检查了所有的芹菜文档和这里,但到目前为止没有解决方案。
任何帮助都非常感谢。
谢谢
您可以使用命令行
运行service来监视已执行的任务。 python manage.py celerycam --frequency=10.0
详情见:http://www.lexev.org/en/2014/django-celery-setup/