一、场景
无论从程序开发还是线上管理,通过本地配置文件写死代码进行配置管理都是不合适的。
其实本文是一篇水文,使用一个小的方法快速实现了所谓Python近原生的云配置管理,不会太高深。
二、nacos与ConfigParser
1、nacos
阿里巴巴开源的一个配置中心,详见
为什么公司有轮子,开源有那么多方案,选nacos呢?
- 目前公司轮子大部分与其业务过于耦合
内部大部分轮子 管理端与配置中心耦合在一起(与业务场景强关联,对单个业务来说,确实是相似的东西,耦合在一起也是能理解)
- 与其他开源相比(如consul),生态更好、sdk更完善
- 个人比较熟悉这个组件
2、ConfigParser
python使用自带的configparser模块用来读取配置文件,配置文件的形式类似windows中的ini文件。
为什么不使用json、xml、yaml、properties来描述我们的配置文件呢?
- 基于ConfigParser实现云配置管理,可能更加符合Pythonist的习惯。
- 大量Python服务的配置文件是基于ConfigParser实现(服务迁移成本低)
三、实现
配置文件类似:
代码语言:txt复制[common]
url = www.qq.com
1、详细实现
代码语言:txt复制import nacos
import ConfigParser
import StringIO
SERVER_ADDRESSES = ""
NAMESPACE = ""
data_id = ""
group = ""
client = nacos.NacosClient(SERVER_ADDRESSES, namespace=NAMESPACE)
nacos_conf = client.get_config(data_id, group)
首先借助nacos-sdk-python生成一个nacos客户端
代码语言:txt复制conf = ConfigParser.ConfigParser()
conf.readfp(StringIO.StringIO(nacos_conf))
- 支持read配置文件
- 支持readfp一个file-like object (此处需要借助StringIO将nacos的结果转换)
url = conf.get("common", "url")
四、参考
ConfigParser-标准库文档
nacos-官方文档
nacos-sdk-python