Files

50 lines
1.5 KiB
Python
Raw Permalink Normal View History

2026-09-08 19:17:35 +08:00
"""Milvus 会话:全局单例 AsyncMilvusClient。
timeout 入参是数据操作默认超时(用 MILVUS_TIMEOUT);
构造为急切连接、由注册表 init_db 做指数退避重试 + 严格模式兜底。
"""
from pymilvus import AsyncMilvusClient
from config.settings import settings
_client: AsyncMilvusClient | None = None
def client() -> AsyncMilvusClient:
global _client
if _client is None:
_client = AsyncMilvusClient(
uri=settings.milvus.uri,
token=settings.milvus.token,
user=settings.milvus.user,
password=settings.milvus.password,
db_name=settings.milvus.db_name,
timeout=settings.milvus.timeout,
)
return _client
2026-09-11 10:47:01 +08:00
async def ensure_database(milvus_client: AsyncMilvusClient | None = None) -> None:
"""Create the configured project database only when it does not exist."""
target = milvus_client or client()
database_name = settings.milvus.db_name
if not database_name:
raise RuntimeError("MILVUS_DB must be configured")
if database_name not in await target.list_databases():
await target.create_database(database_name)
2026-09-08 19:17:35 +08:00
async def init_db() -> None:
client() # 急切建连;失败由注册表重试(config/database/__init__.py)
async def dispose() -> None:
global _client
if _client is not None:
await _client.close()
_client = None
async def check_health() -> None:
2026-09-11 10:47:01 +08:00
await client().get_server_version()