# Nacos-Newsdk-Python
更新了鉴权问题。
see: https://nacos.io/zh-cn/docs/open-API.html
[![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](https://github.com/nacos-group/nacos-sdk-python/blob/master/LICENSE)
### Supported Python version:
Python 2.7
Python 3.6
Python 3.7
### Supported Nacos version
Nacos 0.8.0 ~ 1.3.2
## Installation
```shell
pip install nacos-newsdk-python
```
## Getting Started
```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))
```
## Configuration
```
client = NacosClient(server_addresses, namespace=your_ns, ak=your_ak, sk=your_sk)
```
* *server_addresses* - **required** - Nacos server address, comma separated if more than 1.
* *namespace* - Namespace. | default: `None`
* *ak* - The accessKey to authenticate. | default: null
* *sk* - The secretKey to authentication. | default: null
#### Extra Options
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:
* *default_timeout* - Default timeout for get config from server in seconds.
* *pulling_timeout* - Long polling timeout in seconds.
* *pulling_config_size* - Max config items number listened by one polling process.
* *callback_thread_num* - Concurrency for invoking callback.
* *failover_base* - Dir to store failover config files.
* *snapshot_base* - Dir to store snapshot config files.
* *no_snapshot* - To disable default snapshot behavior, this can be overridden by param *no_snapshot* in *get* method.
* *proxies* - Dict proxy mapping, some environments require proxy access, so you can set this parameter, this way http requests go through the proxy.
## API Reference
### Get Config
>`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`).
* Failover dir can be manually copied from snapshot dir(default: `${cwd}/nacos-data/snapshot`) in advance.
* This helps to suppress the effect of known server failure.
* Step 2 - Get from one server until value is got or all servers tried.
* Content will be save to snapshot dir after got from server.
* Step 3 - Get from snapshot dir.
### Add Watchers
>`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.
* Once changes or deletion of the item happened, callback functions will be invoked.
* If the item is already exists in server, callback functions will be invoked for once.
* Multiple callbacks on one item is allowed and all callback functions are invoked concurrently by `threading.Thread`.
* Callback functions are invoked from current process.
### Remove Watcher
>`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.
### Publish Config
>`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.
* If the data key is not exist, create one first.
* If the data key is exist, update to the content specified.
* Content can not be set to None, if there is need to delete config item, use function **remove** instead.
### Remove Config
>`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.
### Register Instance
>`NacosClient.add_naming_instance(service_name, ip, port, cluster_name, weight, metadata, enable, healthy)`
* `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 format
* `param` *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.
* `return` True if success or an exception will be raised.
### Deregister Instance
>`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.
### Modify Instance
>`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.
### Query Instances
>`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, default `blank`.
* `param` *group_name* Customized group name , default `DEFAULT_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.
### Query Instance Detail
>`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.
### Send Instance Beat
>`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.
### Subscribe Service Instances Changed
>`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, default `blank`.
* `param` *group_name* Customized group name , default `DEFAULT_GROUP`.
* `param` *healthy_only* A bool value for querying healthy instances or not.
* `return`
### Unsubscribe Service Instances Changed
>`NacosClient.unsubscribe(service_name, listener_name)`
* `param` *service_name* **required** Service name to subscribed.
* `param` *listener_name* listener_name which is customized.
* `return`
### Stop All Service Subscribe
>`NacosClient.stop_subscribe()`
* `return`
## Debugging Mode
Debugging mode if useful for getting more detailed log on console.
Debugging mode can be set by:
```
NacosClient.set_debugging()
# only effective within the current process
```
Raw data
{
"_id": null,
"home_page": "https://github.com/nacos-group/nacos-sdk-python",
"name": "nacos-newsdk-python",
"maintainer": "",
"docs_url": null,
"requires_python": "",
"maintainer_email": "",
"keywords": "nacos,nacos-sdk-python,nacos-newsdk-python",
"author": "Mark",
"author_email": "sihengshen@foxmail.com",
"download_url": "https://files.pythonhosted.org/packages/0b/43/f7a6f2864d994f43174082cc087a260cab3c1cb2f64ead73ef571ebf8c4b/nacos-newsdk-python-0.1.16.tar.gz",
"platform": null,
"description": "\n# Nacos-Newsdk-Python\n\n\u66f4\u65b0\u4e86\u9274\u6743\u95ee\u9898\u3002\n\nsee: https://nacos.io/zh-cn/docs/open-API.html\n\n[![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](https://github.com/nacos-group/nacos-sdk-python/blob/master/LICENSE)\n\n\n### Supported Python version\uff1a\n\nPython 2.7\nPython 3.6\nPython 3.7\n\n### Supported Nacos version\nNacos 0.8.0 ~ 1.3.2\n\n\n## Installation\n```shell\npip install nacos-newsdk-python\n```\n\n## Getting Started\n```python\nimport nacos\n\n# Both HTTP/HTTPS protocols are supported, if not set protocol prefix default is HTTP, and HTTPS with no ssl check(verify=False)\n# \"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\"\nSERVER_ADDRESSES = \"server addresses split by comma\"\nNAMESPACE = \"namespace id\"\n\n# no auth mode\nclient = nacos.NacosClient(SERVER_ADDRESSES, namespace=NAMESPACE)\n# auth mode\n#client = nacos.NacosClient(SERVER_ADDRESSES, namespace=NAMESPACE, ak=\"{ak}\", sk=\"{sk}\")\n\n# get config\ndata_id = \"config.nacos\"\ngroup = \"group\"\nprint(client.get_config(data_id, group))\n```\n\n## Configuration\n```\nclient = NacosClient(server_addresses, namespace=your_ns, ak=your_ak, sk=your_sk)\n```\n\n* *server_addresses* - **required** - Nacos server address, comma separated if more than 1.\n* *namespace* - Namespace. | default: `None`\n* *ak* - The accessKey to authenticate. | default: null\n* *sk* - The secretKey to authentication. | default: null\n\n#### Extra Options\nExtra option can be set by `set_options`, as following:\n\n```\nclient.set_options({key}={value})\n# client.set_options(proxies={\"http\":\"192.168.3.50:809\"})\n```\n\nConfigurable options are:\n\n* *default_timeout* - Default timeout for get config from server in seconds.\n* *pulling_timeout* - Long polling timeout in seconds.\n* *pulling_config_size* - Max config items number listened by one polling process.\n* *callback_thread_num* - Concurrency for invoking callback.\n* *failover_base* - Dir to store failover config files.\n* *snapshot_base* - Dir to store snapshot config files.\n* *no_snapshot* - To disable default snapshot behavior, this can be overridden by param *no_snapshot* in *get* method.\n* *proxies* - Dict proxy mapping, some environments require proxy access, so you can set this parameter, this way http requests go through the proxy.\n\n## API Reference\n \n### Get Config\n>`NacosClient.get_config(data_id, group, timeout, no_snapshot)`\n\n* `param` *data_id* Data id.\n* `param` *group* Group, use `DEFAULT_GROUP` if no group specified.\n* `param` *timeout* Timeout for requesting server in seconds.\n* `param` *no_snapshot* Whether to use local snapshot while server is unavailable.\n* `return` \nW\nGet value of one config item following priority:\n\n* Step 1 - Get from local failover dir(default: `${cwd}/nacos-data/data`).\n * Failover dir can be manually copied from snapshot dir(default: `${cwd}/nacos-data/snapshot`) in advance.\n * This helps to suppress the effect of known server failure.\n \n* Step 2 - Get from one server until value is got or all servers tried.\n * Content will be save to snapshot dir after got from server.\n\n* Step 3 - Get from snapshot dir.\n\n### Add Watchers\n>`NacosClient.add_config_watchers(data_id, group, cb_list)`\n\n* `param` *data_id* Data id.\n* `param` *group* Group, use `DEFAULT_GROUP` if no group specified.\n* `param` *cb_list* List of callback functions to add.\n* `return`\n\nAdd watchers to a specified config item.\n* Once changes or deletion of the item happened, callback functions will be invoked.\n* If the item is already exists in server, callback functions will be invoked for once.\n* Multiple callbacks on one item is allowed and all callback functions are invoked concurrently by `threading.Thread`.\n* Callback functions are invoked from current process.\n\n### Remove Watcher\n>`NacosClient.remove_config_watcher(data_id, group, cb, remove_all)`\n\n* `param` *data_id* Data id.\n* `param` *group* Group, use \"DEFAULT_GROUP\" if no group specified.\n* `param` *cb* Callback function to delete.\n* `param` *remove_all* Whether to remove all occurrence of the callback or just once.\n* `return`\n\nRemove watcher from specified key.\n\n### Publish Config\n>`NacosClient.publish_config(data_id, group, content, timeout)`\n\n* `param` *data_id* Data id.\n* `param` *group* Group, use \"DEFAULT_GROUP\" if no group specified.\n* `param` *content* Config value.\n* `param` *timeout* Timeout for requesting server in seconds.\n* `return` True if success or an exception will be raised.\n\nPublish one data item to Nacos.\n* If the data key is not exist, create one first.\n* If the data key is exist, update to the content specified.\n* Content can not be set to None, if there is need to delete config item, use function **remove** instead.\n\n### Remove Config\n>`NacosClient.remove_config(data_id, group, timeout)`\n* `param` *data_id* Data id.\n* `param` *group* Group, use \"DEFAULT_GROUP\" if no group specified.\n* `param` *timeout* Timeout for requesting server in seconds.\n* `return` True if success or an exception will be raised.\n\nRemove one data item from Nacos.\n\n### Register Instance\n>`NacosClient.add_naming_instance(service_name, ip, port, cluster_name, weight, metadata, enable, healthy)`\n* `param` *service_name* **required** Service name to register to.\n* `param` *ip* **required** IP of the instance.\n* `param` *port* **required** Port of the instance.\n* `param` *cluster_name* Cluster to register to.\n* `param` *weight* A float number for load balancing weight.\n* `param` *metadata* Extra info in JSON string format or dict format\n* `param` *enable* A bool value to determine whether instance is enabled or not.\n* `param` *healthy* A bool value to determine whether instance is healthy or not.\n* `param` *ephemeral* A bool value to determine whether instance is ephemeral or not.\n* `return` True if success or an exception will be raised.\n\n### Deregister Instance\n>`NacosClient.remove_naming_instance(service_name, ip, port, cluster_name)`\n* `param` *service_name* **required** Service name to deregister from.\n* `param` *ip* **required** IP of the instance.\n* `param` *port* **required** Port of the instance.\n* `param` *cluster_name* Cluster to deregister from.\n* `param` *ephemeral* A bool value to determine whether instance is ephemeral or not.\n* `return` True if success or an exception will be raised.\n\n### Modify Instance\n>`NacosClient.modify_naming_instance(service_name, ip, port, cluster_name, weight, metadata, enable)`\n* `param` *service_name* **required** Service name.\n* `param` *ip* **required** IP of the instance.\n* `param` *port* **required** Port of the instance.\n* `param` *cluster_name* Cluster name.\n* `param` *weight* A float number for load balancing weight.\n* `param` *metadata* Extra info in JSON string format or dict format.\n* `param` *enable* A bool value to determine whether instance is enabled or not.\n* `param` *ephemeral* A bool value to determine whether instance is ephemeral or not.\n* `return` True if success or an exception will be raised.\n\n### Query Instances\n>`NacosClient.list_naming_instance(service_name, clusters, namespace_id, group_name, healthy_only)`\n* `param` *service_name* **required** Service name to query.\n* `param` *clusters* Cluster names separated by comma.\n* `param` *namespace_id* Customized group name, default `blank`.\n* `param` *group_name* Customized group name , default `DEFAULT_GROUP`.\n* `param` *healthy_only* A bool value for querying healthy instances or not.\n* `return` Instance info list if success or an exception will be raised.\n\n### Query Instance Detail\n>`NacosClient.get_naming_instance(service_name, ip, port, cluster_name)`\n* `param` *service_name* **required** Service name.\n* `param` *ip* **required** IP of the instance.\n* `param` *port* **required** Port of the instance.\n* `param` *cluster_name* Cluster name.\n* `return` Instance info if success or an exception will be raised.\n\n### Send Instance Beat\n>`NacosClient.send_heartbeat(service_name, ip, port, cluster_name, weight, metadata)`\n* `param` *service_name* **required** Service name.\n* `param` *ip* **required** IP of the instance.\n* `param` *port* **required** Port of the instance.\n* `param` *cluster_name* Cluster to register to.\n* `param` *weight* A float number for load balancing weight.\n* `param` *ephemeral* A bool value to determine whether instance is ephemeral or not.\n* `param` *metadata* Extra info in JSON string format or dict format.\n* `return` A JSON object include server recommended beat interval if success or an exception will be raised.\n\n### Subscribe Service Instances Changed\n>`NacosClient.subscribe(listener_fn, listener_interval=7, *args, **kwargs)`\n* `param` *listener_fn* **required** Customized listener function.\n* `param` *listener_interval* Listen interval , default 7 second.\n* `param` *service_name* **required** Service name which subscribes.\n* `param` *clusters* Cluster names separated by comma.\n* `param` *namespace_id* Customized group name, default `blank`.\n* `param` *group_name* Customized group name , default `DEFAULT_GROUP`.\n* `param` *healthy_only* A bool value for querying healthy instances or not.\n* `return`\n\n### Unsubscribe Service Instances Changed\n>`NacosClient.unsubscribe(service_name, listener_name)`\n* `param` *service_name* **required** Service name to subscribed.\n* `param` *listener_name* listener_name which is customized.\n* `return`\n\n### Stop All Service Subscribe \n>`NacosClient.stop_subscribe()`\n* `return`\n\n## Debugging Mode\nDebugging mode if useful for getting more detailed log on console.\n\nDebugging mode can be set by:\n```\nNacosClient.set_debugging()\n# only effective within the current process\n```\n\n",
"bugtrack_url": null,
"license": "Apache License 2.0",
"summary": "A New Python client updated for Nacos.",
"version": "0.1.16",
"project_urls": {
"Documentation": "https://github.com/nacos-group/nacos-sdk-python",
"Homepage": "https://github.com/nacos-group/nacos-sdk-python",
"Nacos Open API Guide": "https://nacos.io/en-us/docs/open-api.html",
"Source": "https://github.com/nacos-group/nacos-sdk-python"
},
"split_keywords": [
"nacos",
"nacos-sdk-python",
"nacos-newsdk-python"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "80bb040b2ab09597808cedf87fddd4704d0f1936cb7461f5d7d9aab59932517b",
"md5": "01472460d9c1acafac31fcb4de645d72",
"sha256": "e8a7875c8e51f59c966fcd9e891e5d6702d30f39ded702233e16b5b0a01badd3"
},
"downloads": -1,
"filename": "nacos_newsdk_python-0.1.16-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "01472460d9c1acafac31fcb4de645d72",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": null,
"size": 21959,
"upload_time": "2024-01-08T13:52:23",
"upload_time_iso_8601": "2024-01-08T13:52:23.153370Z",
"url": "https://files.pythonhosted.org/packages/80/bb/040b2ab09597808cedf87fddd4704d0f1936cb7461f5d7d9aab59932517b/nacos_newsdk_python-0.1.16-py2.py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "0b43f7a6f2864d994f43174082cc087a260cab3c1cb2f64ead73ef571ebf8c4b",
"md5": "005c7e93bf7fd788f897d8ed49977d39",
"sha256": "e857f46d9b69e8b224138bf0aa42c4eadc1ea4dc023f050c263d83e2f5c90ae4"
},
"downloads": -1,
"filename": "nacos-newsdk-python-0.1.16.tar.gz",
"has_sig": false,
"md5_digest": "005c7e93bf7fd788f897d8ed49977d39",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 23539,
"upload_time": "2024-01-08T13:52:25",
"upload_time_iso_8601": "2024-01-08T13:52:25.419463Z",
"url": "https://files.pythonhosted.org/packages/0b/43/f7a6f2864d994f43174082cc087a260cab3c1cb2f64ead73ef571ebf8c4b/nacos-newsdk-python-0.1.16.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-01-08 13:52:25",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "nacos-group",
"github_project": "nacos-sdk-python",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "nacos-newsdk-python"
}