Celery server error: “cannot mix new setting names with old setting names”

Celery server error: “cannot mix new setting names with old setting names”

我正在使用带有 redis 的 celery 服务器作为代理和烧瓶。

在 flask 服务器 运行 之后,我启动了 celery worker(通过 celery -E -A app.celery worker),但出现以下错误:

Process SpawnPoolWorker-115:
Traceback (most recent call last):
  File "c:\users\a\appdata\local\programs\python\python36\lib\site-packages\kombu\utils\objects.py
    return obj.__dict__[self.__name__]
KeyError: 'default_modules'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "c:\users\a\appdata\local\programs\python\python36\lib\site-packages\kombu\utils\objects.py
    return obj.__dict__[self.__name__]
KeyError: 'data'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "c:\users\a\appdata\local\programs\python\python36\lib\site-packages\billiard\process.py",
    self.run()       [.....]
  File "c:\users\a\appdata\local\programs\python\python36\lib\site-packages\celery\app\utils.py",
    for key in sorted(really_left)
celery.exceptions.ImproperlyConfigured:

Cannot mix new setting names with old setting names, please
rename the following settings to use the old format:

include                              -> CELERY_INCLUDE

Or change all of the settings to use the new format :)

但我没有使用设置名称 includeCELERY_INCLUDE ...

celery = Celery(
    imports=app.import_name,
    result_backend=app.config['CELERY_RESULT_BACKEND'],
    broker_url=app.config['BROKER_URL']
)

这个错误可能来自哪里?

如果你按照http://flask.pocoo.org/docs/1.0/patterns/celery/的建议去做 请务必删除函数 make_celery(app) 中的 celery.conf.update(app.config)。 该错误将不再显示。

当您使用

等 2 种方式更新芹菜配置时,会出现此错误

1.

celery.conf.update()

2.

celery.conf.task_routes = { 'taskname': {'queue': 'celery'} }

只遵循一种方式

最佳做法是将所有配置保留在 celeryconfig.py 文件中并导入 celery 应用程序

样本 celeryconfig.py

broker_url = 'redis://localhost:6379/0'
result_backend = 'redis://localhost:6379/0'

task_serializer = 'json'
result_serializer = 'json'
accept_content = ['json']
timezone = 'Asia/Kolkata'
enable_utc = True

app.py

import celeryconfig

celery = Celery()
celery.config_from_object(celeryconfig)

希望这能解决您的问题

检查新的小写设置here以新格式编写配置