def start(self, cmd, routing_key="remote.call"):
self.response = [] # ??????????
self.correlation_id = str(uuid.uuid4())
self.log.info("exec command {}".format(cmd))
self.log.debug("routing key {}".format(routing_key))
self.channel.basic_publish(exchange=self.exchange,
routing_key=routing_key, # ?routing key???????????????routing key???
properties=pika.BasicProperties(
reply_to=self.queue_name,
correlation_id=self.correlation_id
),
body=cmd)
before = time.monotonic() # ??????????
after_len = 0 # ?????????????
while True:
if len(self.response) != after_len: # ?????????,????????????
before_len = len(self.response)
else:
before_len = after_len # ????????????????????????????,??????,????????,?????????
time.sleep(0.4)
self.connection.process_data_events() # ??????,?????????????
if len(self.response) == before_len and before_len:
break
after = time.monotonic() # ?????????????
if (after - before) > self.timeout: # ???????16s,?????????
break
return self.response # ??????????
评论列表
文章目录