【问题标题】:Celery/Django: Get result of periodic task executionCelery/Django:获取周期性任务执行的结果
【发布时间】: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


    【解决方案1】:

    您可以使用命令行运行服务来监控任务是否已执行

        python manage.py celerycam --frequency=10.0
    

    更多详情请访问: http://www.lexev.org/en/2014/django-celery-setup/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-28
      • 1970-01-01
      • 2020-09-30
      • 1970-01-01
      • 2020-09-27
      • 2017-06-15
      • 1970-01-01
      • 2017-09-25
      相关资源
      最近更新 更多