From f3b82608ea465a17e3c3ed016f2095e995271d64 Mon Sep 17 00:00:00 2001 From: Abhishek Rao <169072207+abhisrao05@users.noreply.github.com> Date: Sun, 3 May 2026 14:19:59 -0700 Subject: [PATCH 1/2] Support keep alive timeout option --- src/edge_proxy/main.py | 1 + src/edge_proxy/settings.py | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/src/edge_proxy/main.py b/src/edge_proxy/main.py index 63d61b4..d0b4663 100644 --- a/src/edge_proxy/main.py +++ b/src/edge_proxy/main.py @@ -12,6 +12,7 @@ def serve(): proxy_headers=settings.server.proxy_headers, reload=settings.server.reload, use_colors=settings.logging.colours, + timeout_keep_alive=settings.server.timeout_keep_alive, ) diff --git a/src/edge_proxy/settings.py b/src/edge_proxy/settings.py index fdc3647..afe0002 100644 --- a/src/edge_proxy/settings.py +++ b/src/edge_proxy/settings.py @@ -103,6 +103,10 @@ class ServerSettings(BaseModel): port: int = 8000 reload: bool = False proxy_headers: bool = False + # Matches uvicorn's default. Override (e.g. to 120s) when clients poll on + # an interval longer than this — otherwise pooled connections get closed + # server-side before the next poll, causing ConnectionResetError clients. + timeout_keep_alive: int = 5 class HealthCheckSettings(BaseModel): From 3c25467158ec1c3fa749c113755d80b8783ad5e6 Mon Sep 17 00:00:00 2001 From: Abhishek Rao <169072207+abhisrao05@users.noreply.github.com> Date: Fri, 15 May 2026 09:58:37 -0700 Subject: [PATCH 2/2] add validator --- src/edge_proxy/settings.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/edge_proxy/settings.py b/src/edge_proxy/settings.py index afe0002..d35e056 100644 --- a/src/edge_proxy/settings.py +++ b/src/edge_proxy/settings.py @@ -106,7 +106,7 @@ class ServerSettings(BaseModel): # Matches uvicorn's default. Override (e.g. to 120s) when clients poll on # an interval longer than this — otherwise pooled connections get closed # server-side before the next poll, causing ConnectionResetError clients. - timeout_keep_alive: int = 5 + timeout_keep_alive: int = Field(default=5, gt=0) class HealthCheckSettings(BaseModel):