asyncio.wait_for() is too buggy. use util.wait_for2() instead
wasted some time because asyncio.wait_for() was suppressing cancellations. [0][1][2] deja vu... [3] Looks like this is finally getting fixed in cpython 3.12 [4] So far away... In attempt to avoid encountering this again, let's try using asyncio.timeout in 3.11, which is how upstream reimplemented wait_for in 3.12 [4], and aiorpcx.timeout_after in 3.8-3.10. [0] https://github.com/python/cpython/issues/86296 [1] https://bugs.python.org/issue42130 [2] https://bugs.python.org/issue45098 [3] https://github.com/kyuupichan/aiorpcX/issues/44 [4] https://github.com/python/cpython/pull/98518
This commit is contained in:
@@ -166,7 +166,7 @@ class NotificationSession(RPCSession):
|
||||
try:
|
||||
# note: RPCSession.send_request raises TaskTimeout in case of a timeout.
|
||||
# TaskTimeout is a subclass of CancelledError, which is *suppressed* in TaskGroups
|
||||
response = await asyncio.wait_for(
|
||||
response = await util.wait_for2(
|
||||
super().send_request(*args, **kwargs),
|
||||
timeout)
|
||||
except (TaskTimeout, asyncio.TimeoutError) as e:
|
||||
|
||||
Reference in New Issue
Block a user