forked from goodboy/tractor
				
			Proxy asyncio cancelleds as well
							parent
							
								
									40984b9f0e
								
							
						
					
					
						commit
						051ea3f99d
					
				| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue