feat:新增投顾agent和nl2sqlagent
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
"""NL2SQL 依赖健康检查。"""
|
||||
from __future__ import annotations
|
||||
|
||||
import asyncio
|
||||
import time
|
||||
from collections.abc import Awaitable, Callable
|
||||
|
||||
|
||||
async def _check_one(checker: Callable[[], Awaitable[None]]) -> dict:
|
||||
started = time.perf_counter()
|
||||
try:
|
||||
await checker()
|
||||
except Exception as exc: # noqa: BLE001 对外只返回异常类型
|
||||
return {
|
||||
"status": f"down: {type(exc).__name__}",
|
||||
"ms": round((time.perf_counter() - started) * 1000, 1),
|
||||
}
|
||||
return {"status": "ok", "ms": round((time.perf_counter() - started) * 1000, 1)}
|
||||
|
||||
|
||||
async def check_nl2sql_health(checkers: dict[str, Callable[[], Awaitable[None]]]) -> dict:
|
||||
"""并行检查依赖,返回不含异常详情的状态摘要。"""
|
||||
names = ("mysql", "redis", "milvus", "llm")
|
||||
values = await asyncio.gather(
|
||||
*(_check_one(checkers[name]) for name in names if name in checkers)
|
||||
)
|
||||
result = {name: value for name, value in zip((name for name in names if name in checkers), values)}
|
||||
result["ready"] = bool(result) and all(item["status"] == "ok" for item in result.values())
|
||||
return result
|
||||
Reference in New Issue
Block a user