nacos-sdk-rust-binding-py
nacos-sdk-rust binding for Python with PyO3.
Tip: nacos-sdk-python 仓库暂未提供 2.x gRPC 交互模式,为了能升级它,故而通过 ffi 方式调用 nacos-sdk-rust
Installation
pip install nacos-sdk-rust-binding-py
Usage
使用样例请看仓库内的 examples 目录
其它设置
环境变量 NACOS_CLIENT_LOGGER_LEVEL=INFO
可设置日志打印级别,默认 INFO
- 客户端日志请在目录
$HOME/logs/nacos/
查看
环境变量 NACOS_CLIENT_COMMON_THREAD_CORES=4
可设置客户端核心线程数,默认是 CPU 数目 1
环境变量 ENV_NACOS_CLIENT_NAMING_PUSH_EMPTY_PROTECTION=false
可关闭 Naming 防推空保护,默认 true
更多环境变量请看 nacos-sdk-rust
的文档说明
Definition of ClientOptions
class ClientOptions:
server_addr: String,
namespace: String,
app_name: Option<String>,
username: Option<String>,
password: Option<String>,
naming_push_empty_protection: Option<bool>,
naming_load_cache_at_start: Option<bool>,
def __init__(self, server_addr, namespace, app_name, username, password):
self.server_addr = server_addr
self.namespace = namespace
self.app_name = app_name
self.username = username
self.password = password
Definition of Config
class NacosConfigResponse:
namespace: String,
data_id: String,
group: String,
content: String,
content_type: String,
md5: String,
class NacosConfigClient:
def __init__(self, client_options: ClientOptions):
pass
def get_config(self, data_id: String, group: String) -> String:
pass
def get_config_resp(self, data_id: String, group: String) -> NacosConfigResponse:
pass
def publish_config(self, data_id: String, group: String, content: String) -> bool:
pass
def remove_config(self, data_id: String, group: String) -> bool:
pass
def add_listener(self, data_id: String, group: String, listener: py_function):
pass
Definition of Naming
class NacosServiceInstance:
instance_id: Option<String>,
ip: String,
port: i32,
weight: Option<f64>,
healthy: Option<bool>,
enabled: Option<bool>,
ephemeral: Option<bool>,
cluster_name: Option<String>,
service_name: Option<String>,
metadata: Option<std::collections::HashMap<String, String>>,
def __init__(self, ip, port, weight, healthy, enabled, ephemeral, cluster_name, service_name, metadata):
pass
class NacosNamingClient:
def __init__(self, client_options: ClientOptions):
pass
def register_instance(self, service_name: String, group: String, service_instance: NacosServiceInstance):
pass
def deregister_instance(self, service_name: String, group: String, service_instance: NacosServiceInstance):
pass
def batch_register_instance(self, service_name: String, group: String, service_instances: [NacosServiceInstance]):
pass
def get_all_instances(self, service_name: String, group: String, clusters: Option<[String]>, subscribe: Option<bool>) -> [NacosServiceInstance]:
pass
def select_instances(self, service_name: String, group: String, clusters: Option<[String]>, subscribe: Option<bool>, healthy: Option<bool>) -> [NacosServiceInstance]:
pass
def select_one_healthy_instance(self, service_name: String, group: String, clusters: Option<[String]>, subscribe: Option<bool>) -> NacosServiceInstance:
pass
def subscribe(self, service_name: String, group: String, clusters: Option<[String]>, listener: py_function) -> NacosServiceInstance:
pass
Development
Setup virtualenv:
python -m venv venv
Activate venv:
source venv/bin/activate
Install maturin
:
pip install maturin[patchelf]
Build bindings:
maturin develop
Run some tests:
maturin develop -E test
behave tests
Build API docs:
maturin develop -E docs
pdoc nacos-sdk-rust-binding-py
License
Apache License Version 2.0
Acknowledgement