You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
importasyncioasyncdeff1():
awaitasyncio.sleep(1)
asyncdeff2():
return42asyncdefmain():
# case 1gfut=asyncio.gather(f1(), f2(), return_exceptions=True)
# case 2#gfut = asyncio.gather(f2(), f1(), return_exceptions=True)awaitasyncio.sleep(0.1)
gfut.cancel("my message")
awaitgfutasyncio.run(main())
# case 1#Traceback (most recent call last):# File "/Users/vladima/Sources/gather.py", line 14, in main# print(await gfut)#asyncio.exceptions.CancelledError##During handling of the above exception, another exception occurred:##Traceback (most recent call last):# File "/Users/vladima/Sources/gather.py", line 16, in <module># asyncio.run(main())# File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/asyncio/runners.py", line 44, in run# return loop.run_until_complete(main)# File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/asyncio/base_events.py", line 646, in run_until_complete# return future.result()#asyncio.exceptions.CancelledError# case 2#Traceback (most recent call last):# File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/asyncio/tasks.py", line 605, in sleep# return await future#asyncio.exceptions.CancelledError: my message#During handling of the above exception, another exception occurred:#Traceback (most recent call last):# File "/Users/vladima/Sources/gather.py", line 14, in main# print(await gfut)#asyncio.exceptions.CancelledError##During handling of the above exception, another exception occurred:##Traceback (most recent call last):# File "/Users/vladima/Sources/gather.py", line 16, in <module># asyncio.run(main())# File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/asyncio/runners.py", line 44, in run# return loop.run_until_complete(main)# File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/asyncio/base_events.py", line 646, in run_until_complete# return future.result()#asyncio.exceptions.CancelledError
Currently traceback and description parts of CancelledError depend upon the order of arguments that were passed into asyncio.gather. The reason I believe is this: here fut would be bound to the last item in children which might or might not correspond to the cancelled task and instead it should probably be one of tasks that were actually cancelled (which is still not ideal since there might be many of them but I guess with gather it is as good as it can be).
The text was updated successfully, but these errors were encountered:
Note that msg argument to cancel() is deprecated in 3.11 and will be removed in the future, so once that happens it will be just that traceback is different - not sure if that's an issue that needs a fix.
Actually on the final 3.11 release cancel(msg) will be undeprecated — we had a last minute change of heart. So if there’s an issue it may have to be addressed — in 3.12, probably.
Currently traceback and description parts of
CancelledError
depend upon the order of arguments that were passed intoasyncio.gather
. The reason I believe is this: herefut
would be bound to the last item inchildren
which might or might not correspond to the cancelled task and instead it should probably be one of tasks that were actually cancelled (which is still not ideal since there might be many of them but I guess withgather
it is as good as it can be).The text was updated successfully, but these errors were encountered: