基于shenyu 2.7.0.2的python客户端
Project description
注册方式
1. 全路径注册(默认)
register_all_paths=True(默认)时,向 Admin 注册 context_path/**,网关代理整个上下文下所有 HTTP 路径。
2. 按接口注册(注解)
将 register_all_paths 设为 False,在需要暴露的接口上使用 @register_metadata(别名 @shenyu_client),启动时由 SHENYU_CONFIG.register() 批量上报:
from shenyu_register.annotations import register_metadata
SHENYU_CONFIG.register_all_paths = False
@register_metadata("/health", path_desc="健康检查")
@app.get("/health")
def health():
return {"status": "ok"}
装饰器写在路由装饰器内侧(更靠近 def),与 Flask 用法一致。path 可为相对 context_path 的路径(如 /health),注册时会拼成 /python-demo/health。
也可用代码声明:SHENYU_CONFIG.add_endpoint("/health", path_desc="健康检查")。
import logging
import os
from contextlib import asynccontextmanager
import uvicorn
from fastapi import FastAPI
from shenyu_register.config import SHENYU_CONFIG
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
HTTP_PORT = int(os.getenv("PORT", os.getenv("UVICORN_PORT", "8000")))
# ShenYu:在代码中改配置,例如 enabled / server_lists / app_name 等
SHENYU_CONFIG.enabled = True
SHENYU_CONFIG.app_name = "python-demo"
SHENYU_CONFIG.context_path = "/python-demo"
SHENYU_CONFIG.server_lists = "http://127.0.0.1:9095"
SHENYU_CONFIG.heartbeat_interval_seconds = 10
SHENYU_CONFIG.admin_username = "admin"
SHENYU_CONFIG.admin_password = "123456"
@asynccontextmanager
async def lifespan(app: FastAPI):
"""
- 启动阶段 ``register`` 若抛错:记录日志后向上抛出,**不会**执行 ``yield``,应用不完成启动;此时未成功注册,**不需要** ``shutdown``。
- 启动成功并 ``yield`` 之后:无论之后是正常停服还是其它原因结束 lifespan,都会在 ``finally`` 里调用 ``shutdown``(离线上报)。
- ``shutdown`` 内部若再抛错:在 ``finally`` 里捕获并记日志,**避免**掩盖其它清理逻辑或影响进程退出。
"""
try:
SHENYU_CONFIG.register(service_port=HTTP_PORT)
except Exception:
logger.exception("ShenYu 启动注册失败,应用将不会完成启动")
raise
try:
yield
finally:
try:
SHENYU_CONFIG.shutdown()
except Exception:
logger.exception("ShenYu shutdown(心跳停止 / 离线上报)失败,可在 Admin 侧检查或手工下线实例")
app = FastAPI(title="Shenyu Client Demo", version="0.1.0", lifespan=lifespan)
@app.get("/")
def read_root():
return {"message": "Hello, FastAPI"}
@app.get("/health")
def health():
return {"status": "ok"}
if __name__ == "__main__":
uvicorn.run("example:app", host="0.0.0.0", port=HTTP_PORT, reload=False)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file shenyu_client_python-1.0.1.tar.gz.
File metadata
- Download URL: shenyu_client_python-1.0.1.tar.gz
- Upload date:
- Size: 11.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3755ddfa6609c324888c9ea8596f0c8169887900716f89aa34b749e6840d8b18
|
|
| MD5 |
83f1b1a218667f3b0ecaa6c2991626b6
|
|
| BLAKE2b-256 |
75aabcd737a5787a03aae53bf6977fc785acf29625ee19a970e95bee4bb333da
|
File details
Details for the file shenyu_client_python-1.0.1-py3-none-any.whl.
File metadata
- Download URL: shenyu_client_python-1.0.1-py3-none-any.whl
- Upload date:
- Size: 15.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4a646d9740ce0652dd7b5624d8dd7059202c1a5a3c9c47cb12e75c630c0ee9f4
|
|
| MD5 |
e381fc52df1807d27aa1158b1792e122
|
|
| BLAKE2b-256 |
77f1be68fbd8ad833cb901375bd508415e3ee8539b03ce3e778cecbc8449cd27
|