def call(self, ctxt, method, **kwargs): """Invoke a method and wait for a reply. See RPCClient.call().""" if self.target.fanout: raise exceptions.InvalidTarget("A call cannot be used with fanout", self.target) msg = self._make_message(ctxt, method, kwargs) msg_ctxt = self.serializer.serialize_context(ctxt) span_host = tomograph.getHost() ser_name = "%s[%s]" % ("RPC_call", self.target.topic) tomograph.start(ser_name, self.target.topic, span_host, 0) trace_info = tomograph.get_trace_info() msg_ctxt["trace_id"] = trace_info[0] msg_ctxt["span_id"] = trace_info[1] timeout = self.timeout if self.timeout is None: timeout = self.conf.rpc_response_timeout if self.version_cap: self._check_version_cap(msg.get("version")) try: result = self.transport._send( self.target, msg_ctxt, msg, wait_for_reply=True, timeout=timeout, retry=self.retry ) tomograph.stop(self.target.topic) except driver_base.TransportDriverError as ex: raise ClientSendError(self.target, ex) return self.serializer.deserialize_entity(ctxt, result)
def call(self, ctxt, method, **kwargs): """Invoke a method and wait for a reply. See RPCClient.call().""" if self.target.fanout: raise exceptions.InvalidTarget('A call cannot be used with fanout', self.target) msg = self._make_message(ctxt, method, kwargs) msg_ctxt = self.serializer.serialize_context(ctxt) span_host = tomograph.getHost() ser_name = "%s[%s]" % ("RPC_call", self.target.topic) tomograph.start(ser_name, self.target.topic, span_host, 0) trace_info = tomograph.get_trace_info() msg_ctxt["trace_id"] = trace_info[0] msg_ctxt["span_id"] = trace_info[1] timeout = self.timeout if self.timeout is None: timeout = self.conf.rpc_response_timeout if self.version_cap: self._check_version_cap(msg.get('version')) try: result = self.transport._send(self.target, msg_ctxt, msg, wait_for_reply=True, timeout=timeout, retry=self.retry) tomograph.stop(self.target.topic) except driver_base.TransportDriverError as ex: raise ClientSendError(self.target, ex) return self.serializer.deserialize_entity(ctxt, result)
def cast(self, ctxt, method, **kwargs): """Invoke a method and return immediately. See RPCClient.cast().""" msg = self._make_message(ctxt, method, kwargs) msg_ctxt = self.serializer.serialize_context(ctxt) span_host = tomograph.getHost() ser_name = "%s[%s]" % ("RPC_cast", self.target.topic) tomograph.start(ser_name, self.target.topic, span_host, 0) trace_info = tomograph.get_trace_info() msg_ctxt["trace_id"] = trace_info[0] msg_ctxt["span_id"] = trace_info[1] if self.version_cap: self._check_version_cap(msg.get("version")) try: self.transport._send(self.target, msg_ctxt, msg, retry=self.retry) tomograph.stop(self.target.topic) except driver_base.TransportDriverError as ex: raise ClientSendError(self.target, ex)
def cast(self, ctxt, method, **kwargs): """Invoke a method and return immediately. See RPCClient.cast().""" msg = self._make_message(ctxt, method, kwargs) msg_ctxt = self.serializer.serialize_context(ctxt) span_host = tomograph.getHost() ser_name = "%s[%s]" % ("RPC_cast", self.target.topic) tomograph.start(ser_name, self.target.topic, span_host, 0) trace_info = tomograph.get_trace_info() msg_ctxt["trace_id"] = trace_info[0] msg_ctxt["span_id"] = trace_info[1] if self.version_cap: self._check_version_cap(msg.get('version')) try: self.transport._send(self.target, msg_ctxt, msg, retry=self.retry) tomograph.stop(self.target.topic) except driver_base.TransportDriverError as ex: raise ClientSendError(self.target, ex)