A Python implementation of Nacos OpenAPI.
see: https://nacos.io/docs/latest/guide/user/open-api/
Python 2.7 Python 3.6 Python 3.7
Nacos 0.8.0+ Nacos 1.x Nacos 2.x with http protocol
pip install nacos-sdk-python
import nacos
# Both HTTP/HTTPS protocols are supported, if not set protocol prefix default is HTTP, and HTTPS with no ssl check(verify=False)
# "192.168.3.4:8848" or "https://192.168.3.4:443" or "http://192.168.3.4:8848,192.168.3.5:8848" or "https://192.168.3.4:443,https://192.168.3.5:443"
SERVER_ADDRESSES = "server addresses split by comma"
NAMESPACE = "namespace id"
# no auth mode
client = nacos.NacosClient(SERVER_ADDRESSES, namespace=NAMESPACE)
# auth mode
#client = nacos.NacosClient(SERVER_ADDRESSES, namespace=NAMESPACE, ak="{ak}", sk="{sk}")
# get config
data_id = "config.nacos"
group = "group"
print(client.get_config(data_id, group))
client = NacosClient(server_addresses, namespace=your_ns, ak=your_ak, sk=your_sk)
None
7
Extra option can be set by set_options
, as following:
client.set_options({key}={value})
# client.set_options(proxies={"http":"192.168.3.50:809"})
Configurable options are:
NacosClient.get_config(data_id, group, timeout, no_snapshot)
param
data_id Data id.
param
group Group, use DEFAULT_GROUP
if no group specified.
param
timeout Timeout for requesting server in seconds.
param
no_snapshot Whether to use local snapshot while server is unavailable.
return
W
Get value of one config item following priority:
Step 1 - Get from local failover dir(default: ${cwd}/nacos-data/data
).
${cwd}/nacos-data/snapshot
) in advance.Step 2 - Get from one server until value is got or all servers tried.
Step 3 - Get from snapshot dir.
NacosClient.add_config_watchers(data_id, group, cb_list)
param
data_id Data id.param
group Group, use DEFAULT_GROUP
if no group specified.param
cb_list List of callback functions to add.return
Add watchers to a specified config item.
threading.Thread
.
NacosClient.remove_config_watcher(data_id, group, cb, remove_all)
param
data_id Data id.param
group Group, use "DEFAULT_GROUP" if no group specified.param
cb Callback function to delete.param
remove_all Whether to remove all occurrence of the callback or just once.return
Remove watcher from specified key.
NacosClient.publish_config(data_id, group, content, timeout)
param
data_id Data id.param
group Group, use "DEFAULT_GROUP" if no group specified.param
content Config value.param
timeout Timeout for requesting server in seconds.return
True if success or an exception will be raised.Publish one data item to Nacos.
NacosClient.remove_config(data_id, group, timeout)
param
data_id Data id.param
group Group, use "DEFAULT_GROUP" if no group specified.param
timeout Timeout for requesting server in seconds.return
True if success or an exception will be raised.
Remove one data item from Nacos.
NacosClient.add_naming_instance(service_name, ip, port, cluster_name, weight, metadata, enable, healthy,ephemeral,group_name,heartbeat_interval)
param
service_name required Service name to register to.param
ip required IP of the instance.param
port required Port of the instance.param
cluster_name Cluster to register to.param
weight A float number for load balancing weight.param
metadata Extra info in JSON string format or dict formatparam
enable A bool value to determine whether instance is enabled or not.param
healthy A bool value to determine whether instance is healthy or not.param
ephemeral A bool value to determine whether instance is ephemeral or not.param
heartbeat_interval Auto daemon heartbeat interval in seconds.return
True if success or an exception will be raised.
NacosClient.remove_naming_instance(service_name, ip, port, cluster_name)
param
service_name required Service name to deregister from.param
ip required IP of the instance.param
port required Port of the instance.param
cluster_name Cluster to deregister from.param
ephemeral A bool value to determine whether instance is ephemeral or not.return
True if success or an exception will be raised.
NacosClient.modify_naming_instance(service_name, ip, port, cluster_name, weight, metadata, enable)
param
service_name required Service name.param
ip required IP of the instance.param
port required Port of the instance.param
cluster_name Cluster name.param
weight A float number for load balancing weight.param
metadata Extra info in JSON string format or dict format.param
enable A bool value to determine whether instance is enabled or not.param
ephemeral A bool value to determine whether instance is ephemeral or not.return
True if success or an exception will be raised.
NacosClient.list_naming_instance(service_name, clusters, namespace_id, group_name, healthy_only)
param
service_name required Service name to query.param
clusters Cluster names separated by comma.param
namespace_id Customized group name, defaultblank
.param
group_name Customized group name , defaultDEFAULT_GROUP
.param
healthy_only A bool value for querying healthy instances or not.return
Instance info list if success or an exception will be raised.
NacosClient.get_naming_instance(service_name, ip, port, cluster_name)
param
service_name required Service name.param
ip required IP of the instance.param
port required Port of the instance.param
cluster_name Cluster name.return
Instance info if success or an exception will be raised.
NacosClient.send_heartbeat(service_name, ip, port, cluster_name, weight, metadata)
param
service_name required Service name.param
ip required IP of the instance.param
port required Port of the instance.param
cluster_name Cluster to register to.param
weight A float number for load balancing weight.param
ephemeral A bool value to determine whether instance is ephemeral or not.param
metadata Extra info in JSON string format or dict format.return
A JSON object include server recommended beat interval if success or an exception will be raised.
NacosClient.subscribe(listener_fn, listener_interval=7, *args, **kwargs)
param
listener_fn required Customized listener function.param
listener_interval Listen interval , default 7 second.param
service_name required Service name which subscribes.param
clusters Cluster names separated by comma.param
namespace_id Customized group name, defaultblank
.param
group_name Customized group name , defaultDEFAULT_GROUP
.param
healthy_only A bool value for querying healthy instances or not.return
NacosClient.unsubscribe(service_name, listener_name)
param
service_name required Service name to subscribed.param
listener_name listener_name which is customized.return
NacosClient.stop_subscribe()
return
Debugging mode if useful for getting more detailed log on console.
Debugging mode can be set by:
client = nacos.NacosClient(SERVER_ADDRESSES, namespace=NAMESPACE, username=USERNAME, password=PASSWORD,log_level="DEBUG")