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)

  

 

 

 

 

 

posted @ 2022-11-11 16:44  wanghhhh  阅读(1431)  评论(0)    收藏  举报