如何在Django项目中使用Celery 4.4.6 crontab时间表



我刚刚从Celery 3.17升级到4.4.6。不幸的是,我在让crontab任务再次被节拍选中时遇到了一些问题。我认为有些事情已经发生了根本性的变化,但不确定是什么。这些文件不容易解剖。。。

我过去常常把我所有的重复任务放在一个方法中,然后把项目settings.py指向这个时间表,如下所示:CELERYBEAT_SCHEDULE = CelerySchedule.celery_schedule

CelerySchedule看起来像:

从celery.schedules导入crontab

"quot"查看此处:https://docs.celeryproject.org/en/stable/reference/celery.schedules.html"quot">

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,我建议遵循《从Celery 3.1升级》指南。指南中的步骤2表明Celery 4使用了新的设置名称。例如,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,并且您的任务应该运行。

相关内容

  • 没有找到相关文章

最新更新