From edf9d2893039ab198875a82f0dfd2debef2bb2b8 Mon Sep 17 00:00:00 2001 From: Roland Tannous Date: Tue, 17 Mar 2026 13:57:42 +0000 Subject: [PATCH] fix: bypass LoggingMiddleware for SSE streaming endpoint BaseHTTPMiddleware buffers StreamingResponse bodies, which breaks real-time SSE delivery of training progress in Docker containers. Skip the middleware entirely for /api/train/progress so events flow directly to the client unbuffered --- studio/backend/loggers/handlers.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/studio/backend/loggers/handlers.py b/studio/backend/loggers/handlers.py index 3add92ea1e..50e16247af 100644 --- a/studio/backend/loggers/handlers.py +++ b/studio/backend/loggers/handlers.py @@ -27,6 +27,11 @@ logger = structlog.get_logger(__name__) class LoggingMiddleware(BaseHTTPMiddleware): async def dispatch(self, request: Request, call_next: Callable) -> Response: + # Bypass middleware for SSE streaming — BaseHTTPMiddleware + # can buffer StreamingResponse bodies, breaking real-time delivery + if request.url.path == "/api/train/progress": + return await call_next(request) + start_time = time.time() try: