# use-nacos
**Repository Path**: yoke/use-nacos
## Basic Information
- **Project Name**: use-nacos
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2024-04-08
- **Last Updated**: 2025-02-18
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# use-nacos
A python nacos client based on the official [open-api](https://nacos.io/zh-cn/docs/open-api.html).
## install
```shell
pip install use-nacos
```
## usage
### config
```python
from use_nacos import NacosClient
client = NacosClient(...)
# publish config
client.config.publish("test_config", "DEFAULT_GROUP", "test_value")
# get config
assert client.config.get("test_config", "DEFAULT_GROUP") == "test_value"
# subscribe config
def config_update(config):
print(config)
client.config.subscribe(
"test_config",
"DEFAULT_GROUP",
callback=config_update
)
```
### instance
```python
from use_nacos import NacosClient
nacos = NacosClient()
nacos.instance.register(
service_name="test",
ip="10.10.10.10",
port=8000,
weight=10.0
)
nacos.instance.heartbeat(
service_name="test",
ip="10.10.10.10",
port=8000,
)
```
### 😘support `async` mode
```python
# example: fastapi
from contextlib import asynccontextmanager
import uvicorn
from fastapi import FastAPI
from use_nacos import NacosAsyncClient
def config_update(config):
print(config)
@asynccontextmanager
async def lifespan(app: FastAPI):
nacos = NacosAsyncClient()
config_subscriber = await nacos.config.subscribe(
data_id="test-config",
group="DEFAULT_GROUP",
callback=config_update,
)
yield
config_subscriber.cancel()
app = FastAPI(lifespan=lifespan)
if __name__ == '__main__':
uvicorn.run("in_fastapi:app", host="0.0.0.0", port=1081)
```
## Developing
```text
make install # Run `poetry install`
make lint # Runs bandit and black in check mode
make format # Formats you code with Black
make test # run pytest with coverage
make publish # run `poetry publish --build` to build source and wheel package and publish to pypi
```