b01b00698c
The per-call run_in_executor pattern caused network errors. New approach: one thread runs the entire extraction loop and puts SSE strings into an asyncio.Queue via call_soon_threadsafe; the async generator drains the queue. This is the correct pattern for background-thread + SSE streaming in FastAPI.