Skip to main content

Nacos starter for python

Project description

nacos sdk for python

用户接入nacos,进行注册、配置获取等。基于nacos的web接口实现操作。

支持nacos版本

  • 1.4
  • 2.0

使用

注册到nacos

from nacos_starter import Nacos

# 创建初始nacos连接对象
nacos_server = Nacos(host=NACOS_SERVER_ADDR, username=NACOS_USERNAME, password=NACOS_PASSWORD)

# 配置服务注册的参数
nacos_server.register_service(service_ip=NACOS_IP,service_port=NACOS_SERVER_PORT,service_name=SERVER_NAME)

## 如果只注册上去不想让别的服务调用,例如本地开发的时候,可以在register_service中加入enabled=False,默认会注册上去被别的服务发现

# 开启监听配置的线程和服务注册心跳进程的健康检查进程
nacos_server.healthy_check()


#### 如果在flask环境启用远程配置,建议如下用法:
flask_env = {}
# 将本地配置注入到nacos对象中即可获取远程配置,并监听配置变化实时变更
nacos_server.config(env="test",app_config=flask_env)
for item in flask_env:
  app.config[item] = flask_env[item]

"""
参数说明:
  service_ip: 本机ip,用于让其他服务调用自己,如果是docker启动或者有内外网ip需要手动指定,否则自动获取本机ip
  service_port: 指定本服务端口号
  service_name: 本服务名称,用于注册到nacos以及让其他服务调用自己
  env: 远程配置时用于区分环境,例如service-a-test.yaml,表示test环境,也可以不指定
  app_config: 用于指定要接收的配置变量,字典类型,读取的远程配置会放到这里
"""

调用其他服务

新建一个文件,例如file_feign.py

from nacos_starter import NacosBalanceClient

# 定义失败回调
def error_fun(*args):
    for item in args:
        print(item)
    return "自定义错误"

# 新建客户端实例
nacos_client = NacosBalanceClient(host=NACOS_SERVER_ADDR,
                                       service_name="service-file", username=NACOS_USERNAME, password=NACOS_PASSWORD,
                                       timeout=3)

@nacos_client.put_mapping(url="/api/file/upload")
def upload():
    pass

@nacos_client.request_mapping(method="GET", url="/api/file/get", consumers = MediaType.APPLICATION_PROBLEM_JSON_VALUE, produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
def get(type: str = 'public', fileName: str = ''):
    pass


@nacos_client.post_mapping(url="/demo/test3")
def apiTest3(formData):
    pass


@nacos_client.request_mapping(method="POST", url="/demo/test4", request_param_json=True)
def apiTest4(jsonData):
    pass

@nacos_client.request_mapping(method="GET", url="/demo/test5")
def apiTest5(*args,**kwargs):
    pass

使用

import file_feign

file_feign.get('dns', '/a/b/c/a.png')

熔断和流控

熔断控制通过在flask接口位置加入装饰器来达到熔断,使用方法:

import nacos_starter.func_fuse as funcFuse
from flask import Blueprint

SimpleFuncFuse1 = funcFuse.DegradeRule()

bp = Blueprint('api', __name__, url_prefix='/api')

@bp.route("/test1", methods=['GET'])
@SimpleFuncFuse1.hystrix(timeout=2)
def fuseTest1():#超时返回自定义超时错误返回函数
    time.sleep(3)
    return "ok"

TODO

  • 简化配置
  • 基于flask插件快速集成

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nacos_starter-1.1.0.tar.gz (17.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nacos_starter-1.1.0-py3-none-any.whl (17.8 kB view details)

Uploaded Python 3

File details

Details for the file nacos_starter-1.1.0.tar.gz.

File metadata

  • Download URL: nacos_starter-1.1.0.tar.gz
  • Upload date:
  • Size: 17.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.11.10

File hashes

Hashes for nacos_starter-1.1.0.tar.gz
Algorithm Hash digest
SHA256 2e4048587cd43e333f31f3e409d1de1495a56e03fb7e220ef2e74a5a771a4a1d
MD5 83398320b3c47f7885ab5a91643e987d
BLAKE2b-256 dc84e7bce5288453e7d3455361f3ad3c4d38730482700940e57aaa76ce142853

See more details on using hashes here.

File details

Details for the file nacos_starter-1.1.0-py3-none-any.whl.

File metadata

  • Download URL: nacos_starter-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 17.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.11.10

File hashes

Hashes for nacos_starter-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1c59dc616fddcacefd5045c6b70d14ade341df260065d10a796a117c60019532
MD5 9b3e3a713039aa58e364643ed2666e7b
BLAKE2b-256 b9bba07b6d70d7481f205aa59780b1eeb4b01c5bec6e9e78ac5872e9f5705686

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page