FastAPI 项目配置管理
安装Dynaconf
Dynaconf 是一个强大的 Python 配置管理库,它支持多种文件格式(如 JSON、YAML、TOML 和 .env 文件)和环境变量来管理应用程序的配置。使用 Dynaconf,您可以轻松地在不同环境(例如开发、测试和生产)之间切换配置。
安装SDK
pip install dynaconf -i https://mirrors.aliyun.com/pypi/simple/
初始化全局配置
1、在项目中创建config包,在config包中创建配置文件,dev.yml、prod.yml 文件
2、编写init.py文件
from pathlib import Path
from dynaconf import Dynaconf# 获取项目的绝对路径
_BASE_DIR = Path(__file__).parent.parent# print(Path(__file__)) # D:\05-FastAPI\project\MyFastAPI\config\__init__.py
# print(Path(__file__).parent) # D:\05-FastAPI\project\MyFastAPI\config
# print(Path(__file__).parent.parent) # D:\05-FastAPI\project\MyFastAPI
# print(_BASE_DIR) # D:\05-FastAPI\project\MyFastAPIprint("project base dir: ", _BASE_DIR)
print("project config dir: ", Path(__file__).parent)settings_files = [# 开发环境Path(__file__).parent / "dev.yml",# 生产环境#Path(__file__).parent / "prod.yml",
]# 配置对象
settings = Dynaconf(envvar_prefix="MY_PROJECT", # 环境变量前缀env_switcher="MY_PROJECT_ENV", # 用于切换模式的环境变量名称 例如: MY_PROJECT_ENV = devsettings_files=settings_files, # 配置文件enviroments=True, # 启用多环境支持base_dir=_BASE_DIR, # 项目的绝对路径load_dotenv=True,
)
3、yml文件
server:port: 8080context_path: /log:log_level: INFOmysql:host: 127.0.0.1port: 3306database_name: testusername: rootpassword: 666666echo_sql: True # 是否打印SQLpool_size: 10 # 连接池的大小,指定同时在连接池中保持的数据库连接数,默认: 5max_overflow: 20 # 超出连接池大小的连接数,超过这个数量的连接将被丢弃,默认: 5pool_pre_ping: True # 启用连接预检
4、测试
from config import settingsport = settings.server.port
context_path = settings.server.context_pathprint(port)
print(context_path)