From 4e4a5ece1560066935fd22f70dab938961684857 Mon Sep 17 00:00:00 2001 From: Viktor Barzin Date: Sat, 21 Jun 2025 13:48:28 +0000 Subject: [PATCH] start coroutine from the thread instead of the wrapper normal func --- crawler/api/app.py | 3 ++- crawler/api/worker.py | 6 +----- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/crawler/api/app.py b/crawler/api/app.py index f4f758c..fd0ad16 100644 --- a/crawler/api/app.py +++ b/crawler/api/app.py @@ -1,3 +1,4 @@ +import asyncio from pathlib import Path import queue from threading import Thread @@ -18,7 +19,7 @@ from ui_exporter import export_immoweb app = FastAPI() # Start worker thread -Thread(target=dump_listings_worker, daemon=True).start() +Thread(target=asyncio.run, args=[dump_listings_worker()], daemon=True).start() # Allow CORS (for React frontend) app.add_middleware( diff --git a/crawler/api/worker.py b/crawler/api/worker.py index 370a7ea..5404a09 100644 --- a/crawler/api/worker.py +++ b/crawler/api/worker.py @@ -16,10 +16,6 @@ task_queue = Queue(maxsize=1) # Disallow multiple in flight requests for now task_results = {} -def dump_listings_worker() -> None: - return asyncio.run(_dump_listings_worker()) - - class TaskStatus(enum.StrEnum): QUEUED = "queued" PROCESSING = "processing" @@ -27,7 +23,7 @@ class TaskStatus(enum.StrEnum): FAILED = "failed" -async def _dump_listings_worker() -> None: # global results is updated +async def dump_listings_worker() -> None: # global results is updated """Background worker that processes tasks""" repository = ListingRepository(engine) data_dir_path = Path("data/rs")