Nacos服务部署及配置读取

Nacos服务部署及配置读取

拉取nacos镜像
docker pull nacos/nacos-server

在这里插入图片描述

启动nacos容器
docker run -d --name nacos -p 8848:8848 -e PREFER_HOST_MODE=hostname -e MODE=standalone nacos/nacos-server

在这里插入图片描述

使用python读取nacos配置
# -*- coding: utf-8 -*-
import configparser
import json
import logging
import requests
import yaml


class NacosCodeException(Exception):
    """Nacos 接口返回异常状态码"""

    def __init__(self, value: str):
        self.value = value

    def __str__(self):
        return f"Nacos 接口返回状态码不等于200, status_code={self.value}"


class NacosLoadException(Exception):
    """ Nacos 数据结构异常"""

    def __init__(self, data_id: str, group: str, conf_type: str):
        self.data_id = data_id
        self.group = group
        self.conf_type = conf_type

    def __str__(self):
        return f"Nacos 数据结构错误, data_id={self.data_id}, " \
               f"group={self.group}, conf_type={self.conf_type}"


def nacos_conf_load(data_id: str, group: str, conf_type: str):
    """从Nacos读取配置"""
    assert conf_type in ("json", "ini", "yaml")

    params = {
        "dataId": data_id,
        "group": group
    }
    r = requests.get("http://127.0.0.1:8848/nacos/v1/cs/configs", params=params)
    if r.status_code != 200:
        raise NacosCodeException(str(r.status_code))
    # 加载配置信息
    try:
        if conf_type == "json":
            config = json.loads(r.text)
        elif conf_type == "ini":
            cf = configparser.RawConfigParser()
            cf.read_string(r.text)
            config = {}
            config.update(cf)
        else:
            config = yaml.load(r.text, Loader=yaml.SafeLoader)
    except Exception:
        raise NacosLoadException(data_id, group, conf_type)
    return config

if __name__ == "__main__":
	# nacos连通测试用
    conf = nacos_conf_load("test11", "DEFAULT_GROUP", "yaml")
    print(conf)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值