async def _call_behavior(rpc_event, state, behavior, argument, request_deserializer): context = _server._Context(rpc_event, state, request_deserializer) try: return await behavior(argument, context), True except Exception as e: # pylint: disable=broad-except with state.condition: if e not in state.rpc_errors: details = f'Exception calling application: {e}' _server.logging.exception(details) _server._abort(state, rpc_event.operation_call, _server.cygrpc.StatusCode.unknown, _server._common.encode(details)) return None, False
async def _call_behavior_async(rpc_event, state, behavior, argument, request_deserializer): context = _Context(rpc_event, state, request_deserializer) try: return await behavior(argument, context), True except Exception as e: with state.condition: if e not in state.rpc_errors: logging.exception(e) _abort(state, rpc_event.operation_call, StatusCode.unknown, _common.encode(e)) return None, False