From de315450a44d3800f026b1d17c92ffadb5c9b7e1 Mon Sep 17 00:00:00 2001 From: Blizzard Date: Sat, 18 Jul 2026 16:25:32 +0800 Subject: [PATCH] =?UTF-8?q?fix(mcp-py):=20NATS=5FURL=20=E9=80=97=E5=8F=B7?= =?UTF-8?q?=E5=A4=9A=E8=8A=82=E7=82=B9=E6=8B=86=E6=88=90=E5=88=97=E8=A1=A8?= =?UTF-8?q?(=E9=9B=86=E7=BE=A4=E8=BF=9E=E6=8E=A5)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Python nats.py 不像 Go 客户端会自动拆逗号串,把 nats://a:4222,nats://a:4223 整串当单 URL 解析端口 → ValueError: Port '4222,nats:' → invalid connect url,mcp-py 崩溃重启循环。 按逗号拆成 servers 列表传入即可。 Co-Authored-By: Claude Opus 4.8 --- sundynix-mcp-py/src/sundynix_mcp_py/mcp_gateway.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/sundynix-mcp-py/src/sundynix_mcp_py/mcp_gateway.py b/sundynix-mcp-py/src/sundynix_mcp_py/mcp_gateway.py index 0801dff..60d1c09 100644 --- a/sundynix-mcp-py/src/sundynix_mcp_py/mcp_gateway.py +++ b/sundynix-mcp-py/src/sundynix_mcp_py/mcp_gateway.py @@ -62,9 +62,12 @@ class McpGateway: async def serve(self, url: str | None = None) -> None: url = url or os.getenv("NATS_URL", "nats://localhost:4222") + # NATS_URL 可为逗号分隔的多节点(集群);Go 客户端能识别逗号串,Python nats.py 不会, + # 须拆成列表传给 servers,否则把整串当单 URL 解析端口时报 "invalid connect url"。 + servers = [u.strip() for u in url.split(",") if u.strip()] # 容忍服务先于 NATS 启动:无限重连 + 等待间隔。 self._nc = await nats.connect( - url, + servers, allow_reconnect=True, max_reconnect_attempts=-1, reconnect_time_wait=1,