code: async def _process_request(self, identity: bytes, empty_frame: list, request: RPCRequest):
          
          try:
              _log.debug("Client %s sent request: %s", identity, request)
              start_time = datetime.now()
              reply = await self.rpc_spec.run_handler(request)
              if self.announce_timing:
                  _log.info("Request {} for {} lasted {} seconds".format(
                      request.id, request.method, (datetime.now() - start_time).total_seconds()))
  
              _log.debug("Sending client %s reply: %s", identity, reply)
              await self._socket.send_multipart([identity, *empty_frame, to_msgpack(reply)])
          except Exception as e:
              if self.serialize_exceptions:
                  _log.exception('Exception thrown in _process_request')
              else:
                  raise e
docs: Executes the method specified in a JSON RPC request and then sends the reply to the socket.
  
          :param identity: Client identity provided by ZeroMQ
          :param empty_frame: Either an empty list or a single null frame depending on the client type
          :param request: JSON RPC request