39 lines
1.0 KiB
Python
39 lines
1.0 KiB
Python
"""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
|
|||
|
|
|
|||
|
|
|
|||
|
|
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:
|
|||
|
|
await client().get_server_version()
|