Closed
Description
Bug report
Bug description:
import sys
import asyncio
if sys.platform == "win32":
EventLoop = asyncio.ProactorEventLoop
else:
EventLoop = asyncio.SelectorEventLoop
async def demo():
class MyError(Exception):
pass
async def throw_error():
raise MyError
try:
async with asyncio.TaskGroup() as tg:
tg.create_task(throw_error())
except* MyError:
pass
def loop_factory():
loop = EventLoop()
loop.set_task_factory(asyncio.eager_task_factory)
return loop
asyncio.run(demo(), loop_factory=loop_factory)
results in:
Traceback (most recent call last):
File "/home/graingert/projects/anyio/demo.py", line 29, in <module>
asyncio.run(demo(), loop_factory=loop_factory)
File "/usr/lib/python3.12/asyncio/runners.py", line 194, in run
return runner.run(main)
^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/asyncio/runners.py", line 118, in run
return self._loop.run_until_complete(task)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/asyncio/base_events.py", line 687, in run_until_complete
return future.result()
^^^^^^^^^^^^^^^
asyncio.exceptions.CancelledError
CPython versions tested on:
3.12
Operating systems tested on:
Linux
Linked PRs
- gh-128588: gh-128550: remove eager tasks optimization that missed and introduced incorrect cancellations #129063
- [3.13] gh-128588: gh-128550: remove eager tasks optimization that missed and introduced incorrect cancellations (GH-129063) #129089
- [3.12] gh-128588: gh-128550: gh-128552: fix refcycles in eager task creation (#128553) and remove eager tasks optimization that missed and introduced incorrect cancellations (python#129063) #128586
Metadata
Metadata
Assignees
Projects
Status
Done