python - 如何使用 Dynaconf 配置 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()
方法文档。
您将拥有一个设置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_
用作所有设置的前缀。
推荐阅读
- java - 如何从 Java 中的 /places/v1/autosuggest 获取 JSON 响应?
- jquery - 通过 jQuery AJAX 在 ASP.Net Core 中返回视图 - 在生产中不起作用
- c++ - C ++检查国际象棋游戏中是否有玩家在路上
- reactjs - 如何在反应中导航到新页面?
- java - Java:方法 org.postgresql.jdbc4.Jdbc4Connection.isValid(int) 尚未实现
- prolog - 试图在序言中打印出 preOrder Traversal
- html - 显示外部 SVG
- node.js - 如何使基于角色的中间件在nodejs和mongoose中以适当的权限访问api?
- java - 并行垃圾收集器是否在主程序旁边的单独线程上运行
- lua - 丰富的 Lua 智能感知