Be more pedantic with error handling
							parent
							
								
									15b63b7190
								
							
						
					
					
						commit
						1192541623
					
				|  | @ -358,33 +358,39 @@ class Portal: | |||
| 
 | ||||
|         fn_mod_path, fn_name = func_deats(func) | ||||
| 
 | ||||
|         cid, recv_chan, functype, first_msg = await self._submit( | ||||
|             fn_mod_path, fn_name, kwargs) | ||||
| 
 | ||||
|         assert functype == 'context' | ||||
| 
 | ||||
|         msg = await recv_chan.receive() | ||||
|         try: | ||||
|             # the "first" value here is delivered by the callee's | ||||
|             # ``Context.started()`` call. | ||||
|             first = msg['started'] | ||||
|             cid, recv_chan, functype, first_msg = await self._submit( | ||||
|                 fn_mod_path, fn_name, kwargs) | ||||
| 
 | ||||
|         except KeyError: | ||||
|             assert msg.get('cid'), ("Received internal error at context?") | ||||
|             assert functype == 'context' | ||||
|             msg = await recv_chan.receive() | ||||
| 
 | ||||
|             if msg.get('error'): | ||||
|                 # raise the error message | ||||
|                 raise unpack_error(msg, self.channel) | ||||
|             else: | ||||
|                 raise | ||||
|         try: | ||||
|             try: | ||||
|                 # the "first" value here is delivered by the callee's | ||||
|                 # ``Context.started()`` call. | ||||
|                 first = msg['started'] | ||||
| 
 | ||||
|             except KeyError: | ||||
|                 assert msg.get('cid'), ("Received internal error at context?") | ||||
| 
 | ||||
|                 if msg.get('error'): | ||||
|                     # raise the error message | ||||
|                     raise unpack_error(msg, self.channel) | ||||
|                 else: | ||||
|                     raise | ||||
| 
 | ||||
|             # deliver context instance and .started() msg value in open | ||||
|             # tuple. | ||||
|             ctx = Context(self.channel, cid, _portal=self) | ||||
|             yield ctx, first | ||||
|             try: | ||||
|                 yield ctx, first | ||||
| 
 | ||||
|             finally: | ||||
|                 await ctx.cancel() | ||||
| 
 | ||||
|         finally: | ||||
|             await recv_chan.aclose() | ||||
|             await ctx.cancel() | ||||
| 
 | ||||
| 
 | ||||
| @dataclass | ||||
| class LocalPortal: | ||||
|  |  | |||
|  | @ -357,7 +357,8 @@ async def open_nursery( | |||
|     try: | ||||
|         if actor is None and is_main_process(): | ||||
| 
 | ||||
|             # if we are the parent process start the actor runtime implicitly | ||||
|             # if we are the parent process start the | ||||
|             # actor runtime implicitly | ||||
|             log.info("Starting actor runtime!") | ||||
| 
 | ||||
|             # mark us for teardown on exit | ||||
|  | @ -376,7 +377,6 @@ async def open_nursery( | |||
|             async with _open_and_supervise_one_cancels_all_nursery( | ||||
|                 actor | ||||
|             ) as anursery: | ||||
| 
 | ||||
|                 yield anursery | ||||
| 
 | ||||
|     finally: | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue