在运行时更新 celeryconf

ala*_*zeo 5 python celery python-3.x

我有一个使用 celery 作为工作后端运行的烧瓶应用程序。

我通过 Flask 加载配置变量并将它们提供给 celery,效果很好。

flask_app.config.from_object(config)
celery.conf.update(flask_app.config)
Run Code Online (Sandbox Code Playgroud)

我的应用程序中有一个选项可以更新设置,该设置也需要在运行时应用于 celery,我的所有尝试似乎都没有永久保存配置。这是文档

from celery import current_app
current_app.conf.update(new_settings)
Run Code Online (Sandbox Code Playgroud)

或者

from celery import current_app
current_app.conf['SOME_SETTING'] = new_settings['SOME_SETTING']
Run Code Online (Sandbox Code Playgroud)

在两次尝试中,“SOME_SETTING”在更新任务期间都在 current_app 中正确更新,但在创建新任务时,配置仍然是原始值而不是新值。

我在网上找不到有关此问题的任何信息,任何正确方向的帮助或指示都会有所帮助。

tom*_*000 2

来得有点晚了,希望这仍然有帮助

如果没有太多新设置需要更新,请尝试直接修改

current_app.conf.broker_url = new_settings["BROKER_URL"]
current_app.conf.result_backend = new_settings["CELERY_RESULT_BACKEND"]
Run Code Online (Sandbox Code Playgroud)

或者根据我的纯粹猜测,你有一些不匹配的命名flask_app.config

Celery 在版本 4 中将一些设置名称更改为小写,请参见此处