From 2f892bef190dc237c043adae1adff79b2f5e58ac Mon Sep 17 00:00:00 2001 From: grigo Date: Tue, 16 Jun 2026 09:45:59 +0300 Subject: [PATCH] fix migration --- backend/app/memory/service.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/backend/app/memory/service.py b/backend/app/memory/service.py index d5c93e9..fc9a9de 100644 --- a/backend/app/memory/service.py +++ b/backend/app/memory/service.py @@ -1,6 +1,7 @@ import asyncio import json import threading +from concurrent.futures import ThreadPoolExecutor from datetime import datetime, timezone from typing import Any @@ -24,6 +25,16 @@ class MemoryService: self.db = db self.user_id = user_id + @staticmethod + def _run_async(coro): + """Run coroutine from sync code; safe inside FastAPI's running event loop.""" + try: + asyncio.get_running_loop() + except RuntimeError: + return asyncio.run(coro) + with ThreadPoolExecutor(max_workers=1) as pool: + return pool.submit(asyncio.run, coro).result() + @staticmethod def _schedule_rag(coro) -> None: def runner() -> None: @@ -260,7 +271,7 @@ class MemoryService: return await retrieve_memory_facts(query or "", user_id=self.user_id, top_k=top_k) try: - rag_facts = asyncio.run(_load()) + rag_facts = self._run_async(_load()) except Exception: rag_facts = [] if rag_facts: