def list_variables(self): #TODO: Define variables here to decouple from frostbite. assert self._is_logged_in() outer_rv = event.AsyncResult() rvs = [] for var_type in commands.variable_types.values(): var = var_type(None) var_rv = event.AsyncResult() rv = self._client.send(var) gevent.spawn(lambda v, r: [v.words[0], r.get()], var, rv).link(var_rv) rvs.append(var_rv) gevent.spawn(lambda rs: dict([p.get() for p in rs]), rvs).link(outer_rv) return outer_rv
def _send(self, msg, headers=None, **kwargs): # could have a specified timeout in kwargs if 'timeout' in kwargs and kwargs['timeout'] is not None: timeout = kwargs['timeout'] else: timeout = CFG.endpoint.receive.timeout or 10 log.debug("RequestEndpointUnit.send (timeout: %s)", timeout) if not self._recv_greenlet: self.channel.setup_listener(NameTrio(self.channel._send_name.exchange)) # anon queue self.channel.start_consume() self.spawn_listener() self.response_queue = event.AsyncResult() self.message_received = lambda m, h: self.response_queue.set((m, h)) BidirectionalEndpointUnit._send(self, msg, headers=headers) try: result_data, result_headers = self.response_queue.get(timeout=timeout) except Timeout: raise exception.Timeout('Request timed out (%d sec) waiting for response from %s' % (timeout, str(self.channel._send_name))) log.debug("Got response to our request: %s, headers: %s", result_data, result_headers) return result_data, result_headers
def __init__(self, _id): self.key = getattr(self, "key", None) self.id = _id self.main_thread: Greenlet = None self.threads = Group() self.ready_commit = event.Event() self.commit = event.Event() self.fail = event.Event() self.done = event.Event() self.result = event.AsyncResult()
def method(*args): if assertion is not None: assertion() kwargs = {} for key in defaults: kwargs[key] = defaults[key] if arg_names is not None: for name, arg in map(None, arg_names, args): kwargs[name] = arg msg = message_type(**kwargs) msg_rv = self._client.send(msg) if out is not None: rv = event.AsyncResult() gevent.spawn(out, msg_rv).link(rv) return rv else: return msg_rv