如何使用 Dynaconf 配置 Celery
How to use Dynaconf to configure Celery
最近我发现了Dynaconf,这是一个很好的配置管理包,可以很好地与Flask 和Django 集成。 Django 应用程序 运行 与 Dynaconf 完美结合。但是,我的应用 运行 后台任务所依赖的 Celery 应用不是。
这是在使用 Dynaconf 之前运行的 Celery 应用程序的配置代码:
from celery import Celery
app = Celery('KillerApp')
app.config_from_object('django.conf:settings', namespace='CELERY')
看来我需要把'django.conf:settings'改成别的东西了。有什么想法吗?
你可以传入一个代表要导入的模块的字符串,也可以直接传入配置对象;见 Celery.config_from_object()
method documentation.
您将拥有一个设置 Dynaconf()
实例的模块,例如如果你有一个名为 acme_project
的包,里面有一个 config.py
文件
from dynaconf import Dynaconf
settings = Dynaconf(
settings_files=['settings.toml', '.secrets.toml'],
)
然后您可以导入 acme_project.config
并在那里找到 settings
对象。您可以导入该对象或让 Celery 通过使用 'acme_project.config:settings'
作为您传递给 app.config_from_object()
的值来执行此操作。 namespace
参数告诉 Celery 期望所有设置都以 CELERY_
为前缀,就像它在 Django 中的工作方式一样。如果您计划使用 Dynaconf 管理的设置来配置多个组件,而不仅仅是 Celery,请使用它。
例如,如果您使用:
app.config_from_object('acme_project.config:settings', namespace='CELERY')
那么您的 settings.toml
或 settings.yaml
或您选择的任何文件格式都需要使用 CELERY_
作为所有设置的前缀。
如果您正在使用 Django plugin for Dynaconf 那么您可以直接使用 django.conf:settings
作为 Dynaconf 修补 django 设置对象。
如果您仍然遇到问题,我建议您在 dynaconf repo 上提出问题并尝试直接使用您的应用程序的设置。
例如,如果您有一个名为 foo
的应用程序,您的 DJANGO_SETTINGS_MODULE
可能是 foo.settings
那么您可以使用芹菜:
app.config_from_object('foo.settings:settings')
最近我发现了Dynaconf,这是一个很好的配置管理包,可以很好地与Flask 和Django 集成。 Django 应用程序 运行 与 Dynaconf 完美结合。但是,我的应用 运行 后台任务所依赖的 Celery 应用不是。
这是在使用 Dynaconf 之前运行的 Celery 应用程序的配置代码:
from celery import Celery
app = Celery('KillerApp')
app.config_from_object('django.conf:settings', namespace='CELERY')
看来我需要把'django.conf:settings'改成别的东西了。有什么想法吗?
你可以传入一个代表要导入的模块的字符串,也可以直接传入配置对象;见 Celery.config_from_object()
method documentation.
您将拥有一个设置 Dynaconf()
实例的模块,例如如果你有一个名为 acme_project
的包,里面有一个 config.py
文件
from dynaconf import Dynaconf
settings = Dynaconf(
settings_files=['settings.toml', '.secrets.toml'],
)
然后您可以导入 acme_project.config
并在那里找到 settings
对象。您可以导入该对象或让 Celery 通过使用 'acme_project.config:settings'
作为您传递给 app.config_from_object()
的值来执行此操作。 namespace
参数告诉 Celery 期望所有设置都以 CELERY_
为前缀,就像它在 Django 中的工作方式一样。如果您计划使用 Dynaconf 管理的设置来配置多个组件,而不仅仅是 Celery,请使用它。
例如,如果您使用:
app.config_from_object('acme_project.config:settings', namespace='CELERY')
那么您的 settings.toml
或 settings.yaml
或您选择的任何文件格式都需要使用 CELERY_
作为所有设置的前缀。
如果您正在使用 Django plugin for Dynaconf 那么您可以直接使用 django.conf:settings
作为 Dynaconf 修补 django 设置对象。
如果您仍然遇到问题,我建议您在 dynaconf repo 上提出问题并尝试直接使用您的应用程序的设置。
例如,如果您有一个名为 foo
的应用程序,您的 DJANGO_SETTINGS_MODULE
可能是 foo.settings
那么您可以使用芹菜:
app.config_from_object('foo.settings:settings')