Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork32.1k
GH-96764: rewriteasyncio.wait_for
to useasyncio.timeout
#98518
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
Uh oh!
There was an error while loading.Please reload this page.
Conversation
45d0725
to6c944d9
CompareThis is more of a POC at this point. I think it is worth changing |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
You got a bit farther than I did when I tried this, but I'm still concerned why you had to modify several tests. (Also, there's one test that fails in CI, but doesn't appear to fail when I run it locally.)
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
Misc/NEWS.d/next/Library/2022-10-22-09-26-43.gh-issue-96764.Dh9Y5L.rst OutdatedShow resolvedHide resolved
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
LG (one naming nit).
Uh oh!
There was an error while loading.Please reload this page.
I had hoped to first merge one of the alternatives that can be backported to 3.10, so we can declare this fixed in 3.10. Then we would merge this one on top of that, but only in 3.11 and main. But we could also just do a custom fix for 3.10 based on one of@twisteroidambassador's PRs. (I wish you had linked this PR to the same issue rather than creating a new issue, since it's all related.) |
In particular,@twisteroidambassador has this PR:#98607 |
Uh oh!
There was an error while loading.Please reload this page.
* Switch to using asyncio.timeout instead of asyncio.wait_for`asyncio.wait_for` creates a task whereas `asyncio.timeout` avoids doing this.Fallback to using `async_timeout` when the python version is too old (<3.11)`asyncio.timeout` will become the underlying implementation for `async.wait_for` in cpython 3.12python/cpython#98518
asyncio.wait_for creates a task whereas asyncio.timeout doesn't.Fallback to a vendored version of async_timeout on Python < 3.11.async.timeout will become the underlying implementation forasync.wait_for in Python 3.12:python/cpython#98518
asyncio.wait_for creates a task whereas asyncio.timeout doesn't.Fallback to a vendored version of async_timeout on Python < 3.11.async.timeout will become the underlying implementation forasync.wait_for in Python 3.12:python/cpython#98518
asyncio.wait_for creates a task whereas asyncio.timeout doesn't.Fallback to a vendored version of async_timeout on Python < 3.11.async.timeout will become the underlying implementation forasync.wait_for in Python 3.12:python/cpython#98518
`asyncio.wait_for` creates another tasks which leads to somerace conditions in cancelation and a performance hitcpython 3.12 will change the underlying implementation of`asyncio.wait_for` to use `asyncio.wait` but that is stilla long way off for many people:python/cpython#98518
Fallback to using async_timeout on older pythonasyncio.wait_for has some underlying problems that are only fixed incpython 3.12. Seepython/cpython#98518
Fallback to using async_timeout on older pythonasyncio.wait_for has some underlying problems that are only fixed incpython 3.12. Seepython/cpython#98518
Fallback to using async_timeout on older pythonasyncio.wait_for has some underlying problems that are only fixed incpython 3.12. Seepython/cpython#98518
Fallback to using async_timeout on older pythonasyncio.wait_for has some underlying problems that are only fixed incpython 3.12. Seepython/cpython#98518
asyncio.wait_for has some underlying problems that are only fixed in cpython 3.12.Use async_timeout instead until the minimum supported version is 3.11+ and it can be replaced with asyncio.timeoutSeepython/cpython#98518
async_timeout does not suffer from the same raceproblems as asyncio.wait_forseepython/cpython#98518for more details
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 usingasyncio.timeout in 3.11, which is how upstream reimplemented wait_for in 3.12 [4], andaiorpcx.timeout_after in 3.8-3.10.[0]python/cpython#86296[1]https://bugs.python.org/issue42130[2]https://bugs.python.org/issue45098[3]kyuupichan/aiorpcX#44[4]python/cpython#98518
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 usingasyncio.timeout in 3.11, which is how upstream reimplemented wait_for in 3.12 [4], andaiorpcx.timeout_after in 3.8-3.10.[0]python/cpython#86296[1]https://bugs.python.org/issue42130[2]https://bugs.python.org/issue45098[3]kyuupichan/aiorpcX#44[4]python/cpython#98518
`asyncio.wait_for` creates another tasks which leads to some race conditions in cancelation and a performance hitcpython 3.12 will change the underlying implementation of `asyncio.wait_for` to use `asyncio.wait` but that is still a long way off for many people:python/cpython#98518
* Switch usage of asyncio.wait_for to async_timeout`asyncio.wait_for` creates another tasks which leads to some race conditions in cancelation and a performance hitcpython 3.12 will change the underlying implementation of `asyncio.wait_for` to use `asyncio.wait` but that is still a long way off for many people:python/cpython#98518* adjust ci
Uh oh!
There was an error while loading.Please reload this page.
This PR changes
asyncio.wait_for
to useasyncio.timeout
as its underlying implementation. It simplifies the code and makes it easy to understand the cancellation semantics as bothasyncio.timeout
andasyncio.wait_for
behaves similarly.Fixes#86296
Fixes#81839
Fixes#96764
asyncio.wait_for
usingasyncio.timeout
#96764