基於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")

四、參考

ConfigParser-標準庫文檔

nacos-官方文檔

nacos-sdk-python