python集成nacos
一. nacos介绍及安装
1. 官网
https://nacos.io/zh-cn/docs/quick-start.html
二.集成python
1.官网地址
https://github.com/nacos-group/nacos-sdk-python
2. 使用
import json
import nacos
SERVER_ADDRESSES = "127.0.0.1:8848"
NAMESPACE = "92e0d4cc-d03c-4d66-8530-dd598501ad29"
# no auth mode
# client = nacos.NacosClient(SERVER_ADDRESSES, namespace=NAMESPACE, ak="nacos", sk="nacos")
# auth mode
client = nacos.NacosClient(SERVER_ADDRESSES, namespace=NAMESPACE, ak="{nacos}", sk="{nacos}")
#
# # get config
data_id = "user-srv.json"
group = "dev"
# # 返回是字符串
print(client.get_config(data_id, group))
json_data = json.loads(client.get_config(data_id, group))
print(json_data)
def test_cb(args):
print("配置文件发生变化")
print(args)
if __name__ == "__main__":
# 如果配置文件更改,可以动态更新进行监听
client.add_config_watcher(data_id, group, test_cb)
import time
time.sleep(300)
3.注意
版本问题:需要使用Python 2.7 Python 3.6 Python 3.7,尝试使用3.8版本会报错
三.service集成nacos
1. nacos配置
创建data id : user-srv.json
组:dev
nacos文件配置如下
{
"consul": {
"host": "127.0.0.1",
"port": 8500
},
"mysql": {
"database": "mxshop_user_srv",
"host": "",
"port": 12,
"user": "",
"password": ""
},
"name": "user-srv",
"tags": [
"python",
"srv","6"
]
}
2. 项目中settings配置
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import json
# 连接池
from playhouse.pool import PooledMySQLDatabase
# 防止出现连接断开查询失败
from playhouse.shortcuts import ReconnectMixin
import nacos
from loguru import logger
class ReconnectMysqlDatabase(ReconnectMixin, PooledMySQLDatabase):
pass
def update_cfg(args):
print(args)
logger.info("配置文件更新")
# content = json.loads(args['content'])
NACOS = {
"Host": "127.0.0.1",
"Port": 8848,
"NameSpace": "92e0d4cc-d03c-4d66-8530-dd598501ad29",
"User": "nacos",
"Password": "Nacos",
"DataId": "user-srv.json",
"Group": "dev"
}
client = nacos.NacosClient(f'{NACOS["Host"]}:{NACOS["Port"]}', namespace=NACOS["NameSpace"], ak=f"{NACOS['User']}",
sk=f"{NACOS['Password']}")
data = client.get_config(NACOS["DataId"], NACOS["Group"])
data = json.loads(data)
logger.info(data)
DB = ReconnectMysqlDatabase(database=data["mysql"]['database'], host=data["mysql"]["host"], port=data["mysql"]["port"],
user=data["mysql"]["user"], password=data["mysql"]["password"])
# consul
CONSUL_HOST = data["consul"]['host']
CONSUL_POST = data["consul"]["port"]
# 服务配置
SERVICE_NAME = data["name"]
SERVICE_TAGS = data["tags"]
3. 自动更新
需在启动配置中添加如下信息:
settings.client.add_config_watcher(settings.NACOS["DataId"], settings.NACOS["Group"], settings.update_cfg)

浙公网安备 33010602011771号