From 441f46ab5ce3b5bd59f75ede0cf1d9f1d5e52c4c Mon Sep 17 00:00:00 2001 From: Stanislav Novosad Date: Fri, 17 Oct 2025 18:29:13 -0600 Subject: [PATCH] Warn ConnectionClosedError in websocket/streaming (#3760) --- skyvern/forge/sdk/routes/streaming.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/skyvern/forge/sdk/routes/streaming.py b/skyvern/forge/sdk/routes/streaming.py index 302ff5c3..76a576ef 100644 --- a/skyvern/forge/sdk/routes/streaming.py +++ b/skyvern/forge/sdk/routes/streaming.py @@ -5,7 +5,7 @@ from datetime import datetime import structlog from fastapi import WebSocket, WebSocketDisconnect from pydantic import ValidationError -from websockets.exceptions import ConnectionClosedOK +from websockets.exceptions import ConnectionClosedError, ConnectionClosedOK from skyvern.forge import app from skyvern.forge.sdk.routes.routers import legacy_base_router @@ -112,6 +112,13 @@ async def task_stream( except ConnectionClosedOK: LOG.info("ConnectionClosedOK error while streaming", task_id=task_id, organization_id=organization_id) return + except ConnectionClosedError: + LOG.warning( + "ConnectionClosedError while streaming (client likely disconnected)", + task_id=task_id, + organization_id=organization_id, + ) + return except Exception: LOG.warning("Error while streaming", task_id=task_id, organization_id=organization_id, exc_info=True) return @@ -237,6 +244,13 @@ async def workflow_run_streaming( organization_id=organization_id, ) return + except ConnectionClosedError: + LOG.warning( + "WofklowRun Streaming: ConnectionClosedError while streaming (client likely disconnected)", + workflow_run_id=workflow_run_id, + organization_id=organization_id, + ) + return except Exception: LOG.warning( "WofklowRun Streaming: Error while streaming",