在为django 1.11升级到Celery 4.x时,正确替换CELERY_RESULT_BACKEND

时间:2018-05-18 16:53:42

标签: django celery django-celery

在尝试替换django-celery并将celery从继承的项目升级到4.x时,我很难理解实际的变化。

Celery已经设置,因为该项目使用3.x,但是从应用程序中删除djcelery时,我遇到了这个:

CELERY_RESULT_BACKEND = 'djcelery.backends.database:DatabaseBackend' CELERYBEAT_SCHEDULER = 'djcelery.schedulers.DatabaseScheduler'

阅读docs,我对使用result_backend或celery.backend.database或其中的内容更加困惑:

CELERY_RESULT_BACKEND = 'celery.backends.database' CELERYBEAT_SCHEDULER = 'beat_scheduler'

CELERY_RESULT_BACKEND: result_backend CELERYBEAT_SCHEDULER: beat_scheduler

我是芹菜的新手,仍然熟悉细节。

1 个答案:

答案 0 :(得分:1)

芹菜4改变了他们的设置,如下所示:http://docs.celeryproject.org/en/latest/userguide/configuration.html#new-lowercase-settings

  

以前版本之间的主要区别,除了较低版本   案例名称,是重命名一些前缀,如celerybeat_ to   beat_,celeryd_到worker_,以及大多数顶级celery_设置   已被移入新的task_前缀。

     

Celery仍然可以读取旧的配置文件,所以有   不要急于转换到新的设置格式。

期望您使用result_backend代替CELERY_RESULT_BACKEND。这里记录了旧的大写设置到新大写设置的完整映射:http://docs.celeryproject.org/en/latest/userguide/configuration.html#new-lowercase-settings

换句话说,resut_backend是密钥的新名称,而不是新的推荐值。这是替换您作业的左侧。这些是等价的:

CELERY_RESULT_BACKEND = 'djcelery.backends.database:DatabaseBackend'
result_backend = 'djcelery.backends.database:DatabaseBackend'

同样这些是等价的:

CELERYBEAT_SCHEDULER = 'djcelery.schedulers.DatabaseScheduler'
beat_scheduler = 'djcelery.schedulers.DatabaseScheduler'