twisteroid ambassador <twisteroid.ambassa...@gmail.com> added the comment:

There is a way to distinguish whether a task is being cancelled from the 
"inside" or "outside", like this:

    async def task1func():
        task2 = asyncio.create_task(task2func())
        try:
            await asyncio.wait((task2,))
        except asyncio.CancelledError:
            print('task1 is being cancelled from outside')
            # Optionally cancel task2 here, since asyncio.wait() shields task2 
from
            # being cancelled from the outside
            raise
        assert task2.done()
        if task2.cancelled():
            print('task2 was cancelled')
            # Note that task1 is not cancelled here, so if you want to cancel
            # task1 as well, do this:
            # raise asyncio.CancelledError
        
        task2_result = task2.result()
        # Use your result here

----------
nosy: +twisteroid ambassador

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

Reply via email to