From 8cfd7af79c28d92bb0b203cf10dc523e836f30b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=86=AC=E7=A5=89?= Date: Wed, 8 Apr 2026 15:36:15 +0800 Subject: [PATCH] feat(server): refine uvicorn timeout keep alive --- server/opensandbox_server/cli.py | 1 + server/opensandbox_server/config.py | 8 ++++++++ server/opensandbox_server/main.py | 1 + 3 files changed, 10 insertions(+) diff --git a/server/opensandbox_server/cli.py b/server/opensandbox_server/cli.py index 02a04e953..2b029ced0 100644 --- a/server/opensandbox_server/cli.py +++ b/server/opensandbox_server/cli.py @@ -292,6 +292,7 @@ def main() -> None: port=server_main.app_config.server.port, reload=args.reload, log_config=server_main._log_config, + timeout_keep_alive=server_main.app_config.server.timeout_keep_alive, ) diff --git a/server/opensandbox_server/config.py b/server/opensandbox_server/config.py index 0abc012e7..b025e77e4 100644 --- a/server/opensandbox_server/config.py +++ b/server/opensandbox_server/config.py @@ -240,6 +240,14 @@ class ServerConfig(BaseModel): le=65535, description="Port exposed by the lifecycle API server.", ) + timeout_keep_alive: int = Field( + default=30, + ge=1, + description=( + "Idle keep-alive timeout in seconds passed to uvicorn. " + "Connections idle longer than this may be closed by the server." + ), + ) log_level: str = Field( default="INFO", description="Python logging level for the server process.", diff --git a/server/opensandbox_server/main.py b/server/opensandbox_server/main.py index 52decb3f7..9137f7d46 100644 --- a/server/opensandbox_server/main.py +++ b/server/opensandbox_server/main.py @@ -227,4 +227,5 @@ async def health_check(): port=app_config.server.port, reload=True, log_config=_log_config, + timeout_keep_alive=app_config.server.timeout_keep_alive, )