def sync_call(self, apiname, args={}, timeout=5): """ 给定参数args,同步调用RPCServer的apiname服务, 返回该服务的处理结果。如果超时,返回None。 Args: apiname (str): 服务API名称。 args (dict): 给服务API的参数。 handler (function): 回调函数。 """ log.debug('RPCClient [%s] sync_call: %s' % (self._name, apiname)) if not isinstance(args, dict): self._timeout = 0 self._sync_ret = None raise InvalidRPCClientArguments(argtype=type(args)) self.rid += 1 args['apiname'] = apiname args['rid'] = self.rid with self._sync_call_time_lock: self._sync_call_time = datetime.now() self._timeout = timeout with self._handlers_lock: self._handlers[self.rid] = None # self._event_engine.emit(Event(self.EVENT_FROM_CLIENT, args)) self._waiting_server_data() ret = self._sync_ret #self._sync_ret = None return ret
def call(self, apiname, args, handler): if not isinstance(args, dict): raise InvalidRPCClientArguments(argtype=type(args)) assert (not handler == None) self.rid += 1 args['apiname'] = apiname args['rid'] = self.rid self._event_engine.emit(Event(self.EVENT_CLIENT, args)) with self._handlers_lock: self._handlers[self.rid] = handler
def sync_call(self, apiname, args, timeout=10): if not isinstance(args, dict): self._timeout = 0 self._sync_ret = None raise InvalidRPCClientArguments(argtype=type(args)) self.rid += 1 args['apiname'] = apiname args['rid'] = self.rid with self._sync_call_time_lock: self._sync_call_time = datetime.now() self._timeout = timeout self._event_engine.emit(Event(self.EVENT_CLIENT, args)) with self._handlers_lock: self._handlers[self.rid] = None self._waiting_server_data() ret = self._sync_ret self._sync_ret = None return ret
def call(self, apiname, args, handler): """ 给定参数args,异步调用RPCServer的apiname服务, 返回结果做为回调函数handler的参数。 Args: apiname (str): 服务API名称。 args (dict): 给服务API的参数。 handler (function): 回调函数。 """ if not isinstance(args, dict): raise InvalidRPCClientArguments(argtype=type(args)) assert (not handler == None) self.rid += 1 args['apiname'] = apiname args['rid'] = self.rid self._event_engine.emit(Event(self.EVENT_CLIENT, args)) with self._handlers_lock: self._handlers[self.rid] = handler