def on_delivery(self, event): now = time.time() link = event.link if link.is_sender: dlv = event.delivery if dlv.settled: self.total_ack_latency += now - self.last_send_time dlv.settle() if self._sends: self._send_message(link) else: self.stop_time = now link.close() duration = self.stop_time - self.start_time thru = self.count / duration permsg = duration / self.count ack = self.total_ack_latency / self.count lat = self.total_tx_latency / self.count print( "Stats:\n" " TX Avg Calls/Sec: %f Per Call: %f Ack Latency %f\n" " RX Latency: %f" % (thru, permsg, ack, lat)) else: msg = Message() dlv = msg.recv(link) if dlv: dlv.update(dlv.ACCEPTED) dlv.settle() self.total_tx_latency += now - msg.body['tx-timestamp'] self._sends -= 1 if self._sends == 0: link.close()
def on_delivery(self, event): rcv = event.receiver msg = Message() if rcv and msg.recv(rcv): event.delivery.settle() self.messages += [msg.body] self.count -= 1 if (self.count == 0): self.acceptor.close()
class Program: def __init__(self): self.handlers = [CHandshaker(), CFlowController()] self.message = Message() def on_reactor_init(self, event): # Create an amqp acceptor. event.reactor.acceptor("0.0.0.0", 5672) # There is an optional third argument to the Reactor.acceptor # call. Using it, we could supply a handler here that would # become the handler for all accepted connections. If we omit # it, the reactor simply inherets all the connection events. def on_delivery(self, event): # XXX: we could make rcv.recv(self.message) work here to # compliment the similar thing on send rcv = event.receiver if rcv and self.message.recv(rcv): print self.message event.delivery.settle()
class Decoder: def __init__(self, *handlers): self.__message = Message() self.handlers = handlers def on_delivery(self, event): if hasattr(event, "message"): return if self.__message.recv(event.link): event.message = self.__message dlv = event.delivery assert dlv.encoded try: event.dispatch(event.root, ENCODED_MESSAGE) event.dispatch(event.root, MESSAGE) dlv.update(Delivery.ACCEPTED) except: dlv.update(Delivery.REJECTED) # XXX: no cause? # XXX: no rethrow? finally: dlv.settle()
class Decoder: def __init__(self, delegate=None): if delegate is None: self.__delegate = self else: self.__delegate = delegate self.__message = Message() def on_delivery(self, event): if self.__message.recv(event.link): event.message = self.__message dlv = event.delivery try: event.dispatch(self.__delegate, MESSAGE) dlv.update(Delivery.ACCEPTED) except: dlv.update(Delivery.REJECTED) traceback.print_exc() print sys.exc_info() finally: dlv.settle()