diff --git a/monitor/nacos.py b/monitor/nacos.py index d84cd04..eccdb68 100644 --- a/monitor/nacos.py +++ b/monitor/nacos.py @@ -330,19 +330,26 @@ def list_instances(namespace_id: str, service_name: str, group_name: str) -> lis def catalog_instances(namespace_id: str, service_name: str, group_name: str) -> list[dict[str, Any]]: - # 调用 catalog/instances 获取注册表视图。 - payload = nacos_request( - "GET", - "/nacos/v1/ns/catalog/instances", - { - "serviceName": service_name, - "groupName": group_name, - "namespaceId": namespace_id or None, - "clusterName": NACOS_DISCOVERY_CLUSTER_NAME, - "pageNo": "1", - "pageSize": str(max(NACOS_PAGE_SIZE, 200)), - }, - ) + try: + # 调用 catalog/instances 获取注册表视图。 + payload = nacos_request( + "GET", + "/nacos/v1/ns/catalog/instances", + { + "serviceName": service_name, + "groupName": group_name, + "namespaceId": namespace_id or None, + "clusterName": NACOS_DISCOVERY_CLUSTER_NAME, + "pageNo": "1", + "pageSize": str(max(NACOS_PAGE_SIZE, 200)), + }, + ) + except RuntimeError as exc: + # 服务不存在时按空列表处理,不让单服务失败拖垮整块 Nacos 面板。 + message = str(exc).lower() + if "is not found" in message or "service " in message and "not found" in message: + return [] + raise # 返回 list 字段。 return list(payload.get("list") or [])