Message368723
In https://bugs.python.org/issue32751 asyncio.wait_for behaviour was changed that when we use timeout=... and the timeout expires, it waits until task is canceled. However, in some cases inner task can trigger exception while it handles cancellation. Check the following code:
import asyncio
async def ignore_cancel_and_raise():
try:
await asyncio.sleep(20)
except asyncio.CancelledError:
raise Exception('Cancellation failed')
async def main():
try:
await asyncio.wait_for(ignore_cancel_and_raise(), timeout=1)
except asyncio.TimeoutError:
print('Timeout')
asyncio.run(main())
It will print "Timeout" and log a warning that "Task exception was never retrieved".
I think that in case inner task cancelation fails with some error, asyncio.wait_for should reraise it instead of silently losing it. |
|
Date |
User |
Action |
Args |
2020-05-12 11:33:07 | Roman Skurikhin | set | recipients:
+ Roman Skurikhin, asvetlov, yselivanov |
2020-05-12 11:33:07 | Roman Skurikhin | set | messageid: <1589283187.27.0.827786043193.issue40607@roundup.psfhosted.org> |
2020-05-12 11:33:07 | Roman Skurikhin | link | issue40607 messages |
2020-05-12 11:33:06 | Roman Skurikhin | create | |
|