RandomZ / app /vectorstore /qdrant_async.py
StormShadow308's picture
feat: async pipeline, job queue, generation hardening, and docs
732b14f
Raw
History Blame Contribute Delete
878 Bytes
"""Shared async Qdrant client (singleton) for search + semantic cache."""
from __future__ import annotations
from typing import TYPE_CHECKING
from app.config import settings
if TYPE_CHECKING:
from qdrant_client import AsyncQdrantClient
_async_client: AsyncQdrantClient | None = None
def get_async_qdrant_client() -> AsyncQdrantClient:
"""Return a process-wide ``AsyncQdrantClient`` (avoids per-request connection churn)."""
global _async_client
if _async_client is None:
from qdrant_client import AsyncQdrantClient
_async_client = AsyncQdrantClient(
url=settings.qdrant_url,
api_key=settings.qdrant_api_key or None,
)
return _async_client
def reset_async_qdrant_client() -> None:
"""Drop the shared client (tests / vectorstore factory reset)."""
global _async_client
_async_client = None