Title: asyncio: Re-reverse deprecation of set_event_loop? · Issue #130322 · python/cpython · GitHub
Open Graph Title: asyncio: Re-reverse deprecation of set_event_loop? · Issue #130322 · python/cpython
X Title: asyncio: Re-reverse deprecation of set_event_loop? · Issue #130322 · python/cpython
Description: Feature or enhancement Proposal: The asyncio policy system is deprecated in python 3.14 (#127949). As implemented, this includes the asyncio.set_event_loop() function. However, in 2022, it was decided that set_event_loop and get_event_lo...
Open Graph Description: Feature or enhancement Proposal: The asyncio policy system is deprecated in python 3.14 (#127949). As implemented, this includes the asyncio.set_event_loop() function. However, in 2022, it was deci...
X Description: Feature or enhancement Proposal: The asyncio policy system is deprecated in python 3.14 (#127949). As implemented, this includes the asyncio.set_event_loop() function. However, in 2022, it was deci...
Opengraph URL: https://github.com/python/cpython/issues/130322
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"asyncio: Re-reverse deprecation of set_event_loop?","articleBody":"# Feature or enhancement\n\n### Proposal:\n\nThe asyncio policy system is deprecated in python 3.14 (#127949). As implemented, this includes the `asyncio.set_event_loop()` function. However, in 2022, [it was decided](https://github.com/python/cpython/pull/98440#issuecomment-1334030286) that `set_event_loop` and `get_event_loop` (just the thread-local storage, not the broader policy system) were serving a useful and separate purpose and should be kept around. I [relied on this decision](https://github.com/tornadoweb/tornado/issues/3216) in Tornado to adapt to various changes while staying on interfaces that I thought would be safe from deprecation. \n\nI would like to briefly bring this up for reconsideration since this is a reversal of a decision from just a few years ago and it appears to have been lumped in with the rest of the policy system without consideration on its own. \n\nIf the decision to deprecate this function stands, I'll be able to adapt in Tornado, but it will be inconvenient: I think I'll have to use asyncio.Runner which was introduced in 3.11, while I'm still supporting 3.9 and 3.10 for another couple of years. \n\n## Background\n\nHere's the history as I remember it. In Python 3.10, the policy system was deprecated and slated for removal in 3.12. When the 3.12 alphas were released with the policy methods removed, we found that there were code paths that relied on the deprecated methods without emitting suitable warnings, leading to surprise breakages. This caused everything to be reset (in 3.10.9 and 3.11.1, which is why those specific versions are [cited in the docs](https://docs.python.org/3.10/library/asyncio-policy.html)). Deprecation notices were removed, but the understanding at the time was that this was just resetting the clock and policies would still be going away, just a few years later. \n\nSeparately, there was a debate about the set_event_loop function, although I can't find the right thread now. (https://github.com/python/cpython/issues/83710#issuecomment-1093855418 and https://github.com/python/cpython/pull/98440#issuecomment-1334030286 are related, but I can't find where the actual conclusion was reached). I think Jupyter was another project where `set_event_loop` turned out to be important?\n\n### Has this already been discussed elsewhere?\n\nThis is a minor feature, which does not need previous discussion elsewhere\n\n### Links to previous discussion of this feature:\n\n_No response_\n\n\u003c!-- gh-linked-prs --\u003e\n### Linked PRs\n* gh-132349\n\u003c!-- /gh-linked-prs --\u003e\n","author":{"url":"https://github.com/bdarnell","@type":"Person","name":"bdarnell"},"datePublished":"2025-02-19T20:46:23.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":13},"url":"https://github.com/130322/cpython/issues/130322"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:f26c2bcb-502f-7cfb-cf8f-fd92941b08f7 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | C9F4:28EE62:94686:C3DFF:696B58E1 |
| html-safe-nonce | 678ea580dbd09ea1cd59afcfdb209ac11086efdd7a40fb8ff20fb0e9774a0707 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJDOUY0OjI4RUU2Mjo5NDY4NjpDM0RGRjo2OTZCNThFMSIsInZpc2l0b3JfaWQiOiI4MDE2Mjg1MTgxMDI4MjkyODMzIiwicmVnaW9uX2VkZ2UiOiJpYWQiLCJyZWdpb25fcmVuZGVyIjoiaWFkIn0= |
| visitor-hmac | 86a92c05aad9208c46882a238ef5e5693c4634626eada4762fbe2cc73881e66a |
| hovercard-subject-tag | issue:2864369028 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/python/cpython/130322/issue_layout |
| twitter:image | https://opengraph.githubassets.com/603290e9e870044ab85714ef4ddd8e8db3fd68d7f346e099f53c9dfa24fffe8e/python/cpython/issues/130322 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/603290e9e870044ab85714ef4ddd8e8db3fd68d7f346e099f53c9dfa24fffe8e/python/cpython/issues/130322 |
| og:image:alt | Feature or enhancement Proposal: The asyncio policy system is deprecated in python 3.14 (#127949). As implemented, this includes the asyncio.set_event_loop() function. However, in 2022, it was deci... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | bdarnell |
| hostname | github.com |
| expected-hostname | github.com |
| None | 5f99f7c1d70f01da5b93e5ca90303359738944d8ab470e396496262c66e60b8d |
| turbo-cache-control | no-preview |
| go-import | github.com/python/cpython git https://github.com/python/cpython.git |
| octolytics-dimension-user_id | 1525981 |
| octolytics-dimension-user_login | python |
| octolytics-dimension-repository_id | 81598961 |
| octolytics-dimension-repository_nwo | python/cpython |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 81598961 |
| octolytics-dimension-repository_network_root_nwo | python/cpython |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 82560a55c6b2054555076f46e683151ee28a19bc |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width