基於nacos+ConfigParser實現Python近原生的雲配置管理
- 2019 年 10 月 7 日
- 筆記
一、場景
無論從程序開發還是線上管理,通過本地配置文件寫死代碼進行配置管理都是不合適的。
其實本文是一篇水文,使用一個小的方法快速實現了所謂Python近原生的雲配置管理,不會太高深。
二、nacos與ConfigParser
1、nacos
阿里巴巴開源的一個配置中心,詳見
為什麼公司有輪子,開源有那麼多方案,選nacos呢?
- 目前公司輪子大部分與其業務過於耦合
內部大部分輪子 管理端與配置中心耦合在一起(與業務場景強關聯,對單個業務來說,確實是相似的東西,耦合在一起也是能理解)
- 與其他開源相比(如consul),生態更好、sdk更完善
- 個人比較熟悉這個組件
2、ConfigParser
python使用自帶的configparser模塊用來讀取配置文件,配置文件的形式類似windows中的ini文件。
為什麼不使用json、xml、yaml、properties來描述我們的配置文件呢?
- 基於ConfigParser實現雲配置管理,可能更加符合Pythonist的習慣。
- 大量Python服務的配置文件是基於ConfigParser實現(服務遷移成本低)
三、實現
配置文件類似:
[common] url = www.qq.com
1、詳細實現
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客戶端
conf = ConfigParser.ConfigParser() conf.readfp(StringIO.StringIO(nacos_conf))
- 支持read配置文件
- 支持readfp一個file-like object (此處需要藉助StringIO將nacos的結果轉換)
url = conf.get("common", "url")