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

Proper replacement for CELERY_RESULT_BACKEND when upgrading to Celery 4.x for django 1.11

在尝试从一个继承的项目中替换 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 或 which:

更加困惑

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

CELERY_RESULT_BACKEND: result_backend CELERYBEAT_SCHEDULER: beat_scheduler

我是 Celery 的新手,还在熟悉细节。

Celery 4 更改了如下设置:http://docs.celeryproject.org/en/latest/userguide/configuration.html#new-lowercase-settings

The major difference between previous versions, apart from the lower case names, are the renaming of some prefixes, like celerybeat_ to beat_, celeryd_ to worker_, and most of the top level celery_ settings have been moved into a new task_ prefix.

Celery will still be able to read old configuration files, so there’s no rush in moving to the new settings format.

期望您使用 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'