feat: hang-guard request() with an outer asyncio deadline
a backend can lose both its transfer wakeup and its own timeout enforcement in one failure (observed: a curl_cffi request that parked an aioweb consumer's event loop for 24h+ - loop idle, nothing in flight, the await never completing). wrap _raw_request in asyncio.wait_for at the effective timeout + 5s slack: the backend's own timeout still fires first in every healthy failure, the envelope only trips when the backend's timer is dead, and its cancellation unwedges the orphaned transfer. deadline = per-call numeric timeout else the session timeout (default 10); timeout=None from request_with_retries guards on the session bound (that was the wedge path). explicit Session(timeout=None) stays unguarded - the documented opt-out for genuinely unbounded calls. additive, no new knob. fired: a never-completing backend hangs forever without this, dies at deadline+slack with it, and request_with_retries returns a FailureResponse instead of hanging. Signed-off-by: disqualifier <dev@disqualifier.me>
This commit is contained in:
+1
-1
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
||||
|
||||
[project]
|
||||
name = "aioweb"
|
||||
version = "1.0.2"
|
||||
version = "1.1.0"
|
||||
description = "Async HTTP session wrapper over aiohttp — proxies, header overwrites, retries, previews. Config-free, installable."
|
||||
requires-python = ">=3.10"
|
||||
dependencies = [
|
||||
|
||||
Reference in New Issue
Block a user