From 98f625ec0dbe3860aee504de0de0c797e2e6d0eb Mon Sep 17 00:00:00 2001 From: Untone Date: Sat, 30 Aug 2025 21:20:01 +0300 Subject: [PATCH] index-metric --- main.py | 1 + services/search.py | 15 ++++++--------- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/main.py b/main.py index be7597d5..f49cb0d4 100644 --- a/main.py +++ b/main.py @@ -75,6 +75,7 @@ graphql_app = GraphQL( # Оборачиваем GraphQL-обработчик для лучшей обработки ошибок + async def graphql_handler(request: Request) -> Response: """ Обработчик GraphQL запросов с поддержкой middleware и обработкой ошибок. diff --git a/services/search.py b/services/search.py index a307f45f..65a7d09b 100644 --- a/services/search.py +++ b/services/search.py @@ -9,23 +9,25 @@ import numpy as np from settings import MUVERA_INDEX_NAME, SEARCH_MAX_BATCH_SIZE, SEARCH_PREFETCH_SIZE from utils.logger import root_logger as logger + # Простые метрики производительности поиска class SearchMetrics: - def __init__(self): + def __init__(self) -> None: self.indexing_start_time: float | None = None self.documents_indexed: int = 0 - + def start_indexing(self, doc_count: int): self.indexing_start_time = time.time() self.documents_indexed = doc_count print(f"🔍 Индексация {doc_count} документов...") - + def end_indexing(self): if self.indexing_start_time: duration = time.time() - self.indexing_start_time rate = self.documents_indexed / duration if duration > 0 else 0 print(f"✅ Индексация завершена за {duration:.2f}s ({rate:.1f} doc/s)") + # Глобальный экземпляр метрик search_metrics = SearchMetrics() @@ -147,12 +149,7 @@ class SearchService: # Get Muvera service info if self.muvera_client: muvera_info = await self.muvera_client.info() - return { - "status": "enabled", - "provider": "muvera", - "mode": "local", - "muvera_info": muvera_info - } + return {"status": "enabled", "provider": "muvera", "mode": "local", "muvera_info": muvera_info} return {"status": "error", "message": "Muvera client not available"} except Exception: logger.exception("Failed to get search info")