Proxy asyncio cancelleds as well

infect_asyncio
Tyler Goodlet 2021-05-11 23:43:33 -04:00
parent 793bcfb7d4
commit aa24bbc11c
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.
"""
nonlocal aio_err
aio_err = task.exception()
try:
aio_err = task.exception()
except asyncio.CancelledError as cerr:
aio_err = cerr
if aio_err:
log.exception(f"asyncio task errorred:\n{aio_err}")
@ -233,17 +236,25 @@ async def run_task(
# raise aio_err
# Do we need this?
except BaseException as err:
except Exception as err:
# await tractor.breakpoint()
aio_err = from_aio._err
# try:
if aio_err is not None:
# always raise from any captured asyncio error
raise err from aio_err
else:
raise
# finally:
# if not task.done():
# task.cancel()
finally:
task.cancel()
except trio.Cancelled:
if not task.done():
task.cancel()
raise
# async def stream_from_task