diff --git a/backend/api_server.py b/backend/api_server.py index 23a5867..fa5c583 100644 --- a/backend/api_server.py +++ b/backend/api_server.py @@ -151,14 +151,24 @@ class APIServer: @app.post("/api/start") async def start_transcription(): - success, message = ctrl.start_transcription() + import asyncio + # Run in thread pool to avoid blocking the event loop + # (start_recording can block up to 15s waiting for Deepgram WS) + loop = asyncio.get_event_loop() + success, message = await loop.run_in_executor( + None, ctrl.start_transcription + ) if not success: raise HTTPException(status_code=400, detail=message) return {"status": "ok", "message": message} @app.post("/api/stop") async def stop_transcription(): - success, message = ctrl.stop_transcription() + import asyncio + loop = asyncio.get_event_loop() + success, message = await loop.run_in_executor( + None, ctrl.stop_transcription + ) if not success: raise HTTPException(status_code=400, detail=message) return {"status": "ok", "message": message} @@ -223,7 +233,11 @@ class APIServer: @app.post("/api/reload-engine") async def reload_engine(): - success, message = ctrl.reload_engine() + import asyncio + loop = asyncio.get_event_loop() + success, message = await loop.run_in_executor( + None, ctrl.reload_engine + ) if not success: raise HTTPException(status_code=500, detail=message) return {"status": "ok", "message": message}