Skip to content

Add request timeouts to the HTTP client - #3

Open
bharat wants to merge 1 commit into
r26D:mainfrom
bharat:client-timeouts
Open

bharat wants to merge 1 commit into
r26D:mainfrom
bharat:client-timeouts

Conversation

@bharat

@bharat bharat commented Aug 15, 2026

Copy link
Copy Markdown

This closes a failure mode I hit in production this week: every Client method issues a requests call with no timeout, so a connection that dies mid-request blocks the calling thread forever. In my case a reverse proxy restarted while Home Assistant's alarm integration was mid-poll, and the polling thread hung silently for 2.5 hours until a full restart reaped it.

What this does

  • Adds a timeout applied to every request in concord232/client/client.py, defaulting to 10 seconds and overridable via the constructor (Client(url, timeout=...)). A dead connection now raises requests.exceptions.Timeout instead of hanging.
  • Adds tests asserting the default and a constructor override reach every request.

Existing callers are unaffected: the constructor signature gains only a defaulted parameter, and 10 seconds is comfortably above normal response times for this API (my panel answers in tens of milliseconds).

The full suite passes (73 tests), and the two changed files are clean under ruff, black, and isort. Happy to adjust the default or the shape of the override if you would like it done differently.

Every Client method issues a requests call with no timeout, so a
connection that dies mid-request (proxy restart, network partition)
blocks the calling thread forever instead of raising. Add a timeout
applied to all requests, defaulting to 10 seconds and overridable via
the constructor.
@bharat
bharat marked this pull request as ready for review August 15, 2026 18:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant