如何使用Dynaconf配置芹菜

2024-05-17 19:44:17 发布

您现在位置:Python中文网/ 问答频道 /正文

最近我发现了Dynaconf,它是一个很好的配置管理包,与Flask和Django很好地集成。Django应用程序使用Dynaconf运行得非常出色。但是,我的应用程序运行后台任务所依赖的芹菜应用程序不是

以下是芹菜应用程序的配置代码,该应用程序在使用Dynaconf之前工作:

from celery import Celery
app = Celery('KillerApp')
app.config_from_object('django.conf:settings', namespace='CELERY')

似乎我需要将“django.conf:settings”更改为其他内容。有什么想法吗


Tags: django代码from程序运行app应用程序flasksettings
2条回答

如果您使用的是Django plugin for Dynaconf,那么就可以直接使用django.conf:settings,因为Dynaconf会修补django设置对象

如果您仍然有问题,我建议在dynaconf repo上打开一个问题,并尝试直接使用应用程序的设置

例如,如果您有一个名为foo的应用程序,您的DJANGO_SETTINGS_MODULE可能是foo.settings,那么您可以将其用于芹菜:

app.config_from_object('foo.settings:settings')

您可以传入表示要导入的模块的字符串,也可以直接传入配置对象;见^{} method documentation

您将有一个模块来设置Dynaconf()实例,例如,如果您有一个名为acme_project的包,其中有一个config.py文件,其中包含

from dynaconf import Dynaconf

settings = Dynaconf(
    settings_files=['settings.toml', '.secrets.toml'],
)

然后可以导入acme_project.config并在那里找到settings对象。您可以导入该对象,也可以使用'acme_project.config:settings'作为传递给app.config_from_object()的值,让芹菜来导入该对象。namespace参数告诉芹菜希望所有设置都以CELERY_作为前缀,这与Django的工作方式完全相同。如果您计划使用Dynaconf托管设置来配置多个组件,而不仅仅是芹菜,请使用此选项

例如,如果您使用:

app.config_from_object('acme_project.config:settings', namespace='CELERY')

然后settings.tomlsettings.yaml或您选择的任何文件格式都需要使用CELERY_作为所有设置的前缀

相关问题 更多 >