New submission from Roman Skurikhin <roman.skurik...@cruxlab.com>:
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. ---------- components: asyncio messages: 368723 nosy: Roman Skurikhin, asvetlov, yselivanov priority: normal severity: normal status: open title: asyncio.wait_for should reraise future exception even if timeout expires type: behavior versions: Python 3.8 _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue40607> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com