milvus.py 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. """
  2. Milvus 管理器:只负责初始化并持有 MilvusClient(单 DB、单 Client)
  3. """
  4. from __future__ import annotations
  5. import logging
  6. from typing import Optional
  7. from pymilvus import MilvusClient
  8. from .settings import settings
  9. logger = logging.getLogger(__name__)
  10. class MilvusManager:
  11. def __init__(self):
  12. self.host: str = settings.MILVUS_HOST
  13. self.port: int = settings.MILVUS_PORT
  14. self.db_name: str = settings.MILVUS_DB
  15. self.user: Optional[str] = settings.MILVUS_USER
  16. self.password: Optional[str] = settings.MILVUS_PASSWORD
  17. self.uri = f"http://{self.host}:{self.port}"
  18. logger.info(f"Init MilvusClient uri={self.uri}, db={self.db_name}")
  19. # ✅ 只初始化一次
  20. self.client = MilvusClient(
  21. uri=self.uri,
  22. user=self.user or "",
  23. password=self.password or "",
  24. db_name=self.db_name,
  25. )
  26. def close(self) -> None:
  27. self.client.close()
  28. # 全局单例
  29. milvus_manager = MilvusManager()
  30. def get_milvus_manager() -> MilvusManager:
  31. return milvus_manager