用Dynaconf进行Python项目的配置管理
2021-07-01 18:27:24
使用Dynaconf进行Python 项目的配置管理
一、介绍
dyanconf是OSM(Object Settings Mapper), 能够从不同的配置数据存储方式中读取配置,例如python配置文件、系统环境变量、redis、ini文件、json文件等等。
使用参考链接:
特点
- 受12 要素应用指南的启发
- 设置管理(默认值、验证、解析、模板)
- 保护敏感信息(密码/令牌)
- 多种文件格式 toml|yaml|json|ini|py和可定制的加载程序。
- 完全支持环境变量以覆盖现有设置(包括 dotenv 支持)。
- 用于多环境的 可选分层系统[default, development, testing, production] (也称为多配置文件)
- 内置支持Hashicorp Vault和Redis作为设置和机密存储。
- Django和Flask Web 框架的内置扩展。
- 用于常见操作的CLI,例如init, list, write, validate, export.
二、快速使用
1、安装
pip install dynaconf
2、初始化 Dynaconf
在您项目的根目录中运行dynaconf init命令。
cd path/to/your/project/
dynaconf init -f toml
初始化后会生成4个文件:
2、书写配置文件
在settings.toml 或 .secrets.toml 里书写项目配置。
3. 使用项目配置
可以看到项目配置被正确的加载了,dynaconf简单使用就到这里了。
三、 进阶使用 — 动态加载不同的配置
1、根据项目需要,定义自己的 toml文件
可以在项目中定义自己想要的toml文件,并且定义文件位置
配置文件内容示例:
2、更新 config.py
添加environments=True ,表示可以根据环境变量来加载项目配置。
3、设置环境变量加载项目配置
- 第一种方式: 直接在程序里配置
import os
# 加载dev环境
os.environ['ENV_FOR_DYNACONF'] = 'development'
import os
# 加载prod环境
os.environ['ENV_FOR_DYNACONF'] = 'production'
import os
# 加载test环境
os.environ['ENV_FOR_DYNACONF'] = 'test'
效果如下:
- 第二种方式:在pycharm里配置
1.点击 Edit Configurations
保存好就配置完成了。
效果如下:
- 第三种方式:在Dockerfile里配置
如果使用docker部署,可以在Dockerfile里配置环境变量
现在我们就可以根据不同的环境变量动态加载项目配置了。