耶耶耶耶耶 发表于 2024-9-23 21:17:20

Python 项目配置管理框架技术选型

一、配景介绍

在实际生产项目中,不同环境(如开辟、测试、生产环境)常有不同配置需求,如数据库链接等。我们期望一份代码无需改动,仅通过单一配置变量调解就能适配和使用多个环境,实现 “一份代码,多处部署”的需求,以提升系统部署灵活性及配置管理能力。具体而言,支持“多环境配置”的配置管理框架(类库)应支持以下功能:
(1)必须支持不同环境加载不同配置,且多个环境可加载通用配置。
(2)必须支持复杂数据结构,如:列表、字典、对象等。
(3)必须支持字段数据范例转换,如:直接输出布尔范例字段的值 True,而不是字符串 'True'。
(4)必须支持变量引用,如:DOMAIN = "example.org",ADMIN_EMAIL = "admin@{DOMAIN}"。
(5)最好支持运行时动态修改配置,可通过修改系统环境变量更新变量值。
(6)最好支持主流配置文件格式,如 yml、json、toml 等,尤其是 Python 中常见的 toml 格式。
二、技术选型

Python 技术栈中常见的配置管理框架(类库)有 ConfigParser、pydantic、dynaconf、dotenv 和 configobj。其中仅 ConfigParser 为 Python 尺度库内置模块。以下对各类库功能、优缺点进行对比,进而输出最终选型。
1. 功能对比

功能/库dynaconfpydanticdotenvconfigobjConfigParser不同环境加载不同配置,且多个环境可加载通用配置支持部分支持部分支持部分支持部分支持支持复杂数据结构,如列表、字典、对象等支持支持不支持支持不支持支持字段数据范例转换支持支持不支持部分支持部分支持支持变量引用支持不支持支持支持部分支持运行时动态修改配置配置支持支持支持支持支持支持主流配置文件格式,如 yml、json、toml 等支持支持不支持不支持不支持部分支持 指需要额外扩展或二次开辟。
2. 优缺点总结

库优点缺点dynaconf支持多种配置文件格式(YAML、JSON、TOML 等);支持复杂数据结构;支持环境切换和通用配置;功能强大,灵活性高。需要额外安装;学习曲线相对较陡。pydantic强大的数据验证和范例转换功能;支持复杂数据结构;与 FastAPI 等框架集成良好。需要额外安装;不直接支持多种配置文件格式,但可以结合其他库使用。dotenv简朴易用,得当加载环境变量;与其他库兼容性好。功能有限,仅支持 .env 文件;不支持复杂数据结构和多种配置文件格式。configobj支持嵌套结构和根本的数据范例转换;易于使用,得当处理处罚 .ini 格式的配置文件。不支持多种配置文件格式(仅支持 .ini);部分支持高级配置管理功能,如环境切换和通用配置。ConfigParser内置于 Python 尺度库,无需额外安装;简朴易用,得当处理处罚根本的 .ini 配置文件。不支持复杂数据结构;不支持多种配置文件格式;功能较为有限,不支持高级配置管理功能。盼望这个调解后的表格可以大概更好地满足你的需求。
三、最终选择

经上述功能对比及优缺点总结,dotenv 和 ConfigParser 因不支持复杂数据结构被率先清除;configobj 既不支持多种配置文件格式,又仅部分支持通用配置和数据转换,也不合适;剩余两方案中,pydantic 极少用于配置管理,不支持变量引用,仅部分支持加载通用配置,实际使用时配置加载与解释需二次开辟,也不完全得当当配置管理工具。而 dynaconf 功能全面,又是专业配置管理库,为最优选择。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: Python 项目配置管理框架技术选型