【问题标题】:How to use Celery 4.4.6 crontab schedules within a Django project如何在 Django 项目中使用 Celery 4.4.6 crontab 计划
【发布时间】:2020-12-01 10:12:39
【问题描述】:

我刚刚从 Celery 3.17 升级到 4.4.6。不幸的是,我在让 crontab 任务再次被节拍拾取时遇到了一些问题。我认为有些事情已经从根本上改变了,但不确定是什么。文档不容易剖析...

我曾经将所有重复性任务放在一个方法中,然后将项目settings.py 指向此计划,如下所示: CELERYBEAT_SCHEDULE = CelerySchedule.celery_schedule

CelerySchedule 看起来像:

从 celery.schedules 导入 crontab

""" 在这里查看:https://docs.celeryproject.org/en/stable/reference/celery.schedules.html """

class CelerySchedule():
    celery_schedule_match = {
        ############# ADMIN #############
        'upload-wee': {'task': 'exports.tasks.send_requests', 'schedule': crontab(hour=10, minute=30)},
        'get_wee' :{'task': 'imports.tasks.get_data', 'schedule': crontab(hour=8, minute=30)},
        

但这似乎不再被阅读了?为什么会这样,我该如何解决?

【问题讨论】:

    标签: python-3.x django celery


    【解决方案1】:

    要升级到 Celery 4,我建议遵循 Upgrading from Celery 3.1 指南。指南中的第 2 步表明 Celery 4 使用 new setting names。例如,CELERYBEAT_SCHEDULE 重命名为 beat_schedule

    使用 Django,您将希望继续使用大写设置名称。运行以下命令以自动将您的设置升级为新名称:

    celery upgrade settings proj/settings.py --django
    

    这还会为您的设置添加一个CELERY_ 前缀,这样它们就不会与其他 Django 设置冲突。重新配置您的 proj/celery.py 以指定此前缀:

    app.config_from_object('django.conf:settings', namespace='CELERY')
    

    您的定期任务设置现在应该被称为 CELERY_BEAT_SCHEDULE 并且您的任务应该运行。

    【讨论】:

      猜你喜欢
      • 2014-07-18
      • 2019-02-08
      • 2011-07-18
      • 2017-09-22
      • 2017-11-25
      • 2017-04-02
      • 2014-03-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多