Proxy asyncio cancelleds as well

infect_asyncio_backup
Tyler Goodlet 2021-05-11 23:43:33 -04:00
parent e14521f3b7
commit 7d67f54ae8
1 changed files with 15 additions and 4 deletions

View File

@ -101,7 +101,10 @@ def _run_asyncio_task(
"""Cancel the calling ``trio`` task on error. """Cancel the calling ``trio`` task on error.
""" """
nonlocal aio_err nonlocal aio_err
aio_err = task.exception() try:
aio_err = task.exception()
except asyncio.CancelledError as cerr:
aio_err = cerr
if aio_err: if aio_err:
log.exception(f"asyncio task errorred:\n{aio_err}") log.exception(f"asyncio task errorred:\n{aio_err}")
@ -233,17 +236,25 @@ async def run_task(
# raise aio_err # raise aio_err
# Do we need this? # Do we need this?
except BaseException as err: except Exception as err:
# await tractor.breakpoint() # await tractor.breakpoint()
aio_err = from_aio._err aio_err = from_aio._err
# try:
if aio_err is not None: if aio_err is not None:
# always raise from any captured asyncio error # always raise from any captured asyncio error
raise err from aio_err raise err from aio_err
else: else:
raise raise
# finally:
# if not task.done():
# task.cancel()
finally: except trio.Cancelled:
task.cancel() if not task.done():
task.cancel()
raise
# async def stream_from_task # async def stream_from_task