bpo-45390: Propagate CancelledError's message from cancelled task to its awaiter by asvetlov · Pull Request #31383 · python/cpython (original) (raw)
Test added.
import asyncio
async def job():
# raise RuntimeError('error!')
await asyncio.sleep(5)
async def main():
task = asyncio.create_task(job())
await asyncio.sleep(1)
task.cancel('cancel job')
await task
if __name__=="__main__":
asyncio.run(main())
Traceback (most recent call last):
File "/home/andrew/projects/cpython/exc_traceback.py", line 14, in <module>
asyncio.run(main())
^^^^^^^^^^^^^^^^^^^
File "/home/andrew/projects/cpython/Lib/asyncio/runners.py", line 44, in run
return loop.run_until_complete(main)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/andrew/projects/cpython/Lib/asyncio/base_events.py", line 640, in run_until_complete
return future.result()
^^^^^^^^^^^^^^^
File "/home/andrew/projects/cpython/exc_traceback.py", line 11, in main
await task
^^^^^^^^^^
File "/home/andrew/projects/cpython/exc_traceback.py", line 5, in job
await asyncio.sleep(5)
^^^^^^^^^^^^^^^^^^^^^^
File "/home/andrew/projects/cpython/Lib/asyncio/tasks.py", line 619, in sleep
return await future
^^^^^^^^^^^^
asyncio.exceptions.CancelledError: cancel job