Serhiy Storchaka <storchaka+cpyt...@gmail.com> added the comment:

Also Future.result() and Future.exception() can raise a CancelledError. So a 
CancelledError raised in a task may not contain a message passed to 
Task.cancel().

import asyncio
import random

async def main():
    fut = asyncio.Future()
    fut.cancel()
    async def job():
        if random.random() < 0.5:
            await asyncio.sleep(2)
        fut.result()
        await asyncio.sleep(5)
    task = asyncio.create_task(job())
    await asyncio.sleep(1)
    task.cancel("cancel task")
    await task

asyncio.run(main())

You need to catch a CancelledError raised in a coroutine and re-raise a new 
CancelledError with the specified cancel message if the task was cancelled.

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue45390>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to