如何在 Django 项目中使用 Celery 4.4.6 crontab 计划
How to use Celery 4.4.6 crontab schedules within a Django project
我刚从 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)},
但这似乎不再有人阅读了?为什么会这样,我该如何解决?
要升级到 Celery 4,我建议遵循 Upgrading from Celery 3.1 guide. Step 2 in the guide indicates that Celery 4 uses 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
,您的任务应 运行。
我刚从 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)},
但这似乎不再有人阅读了?为什么会这样,我该如何解决?
要升级到 Celery 4,我建议遵循 Upgrading from Celery 3.1 guide. Step 2 in the guide indicates that Celery 4 uses 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
,您的任务应 运行。