def client_pub(args): def producer(publisher): logger.info("publishing %s" % args.message) publisher.publish(args.message) publisher._connection.close() try: publisher.stop() except Exception as e: pass publisher = AsyncMQPublisher(args.url, producer=producer, exchange=args.exchange, queue=args.queue, routing_key=args.routing_key, logger=logger) publisher.run()
class SendSimple(unittest.TestCase): def test_send_empty_order(self): global result result = [] def producer(publisher): publisher.publish("order") publisher.publish("terminate") publisher.publish("") publisher._connection.close() try: publisher.stop() except Exception as e: pass self.publisher = AsyncMQPublisher(CLIENT_BROKER_URL, producer=producer, exchange=EXCHANGE, queue="test_queue") self.publisher.run() consumer.run() self.assertEqual(result[0], "order") def test_send_multiple_orders(self): global result result = [] def producer(publisher): publisher.publish("order0") publisher.publish("order1") publisher.publish("order2") publisher.publish("terminate") publisher.publish("") publisher._connection.close() try: publisher.stop() except Exception as e: pass self.publisher = AsyncMQPublisher(CLIENT_BROKER_URL, producer=producer, exchange=EXCHANGE, queue="test_queue") self.publisher.run() consumer.run() self.assertEqual(result[0], "order0") self.assertEqual(result[1], "order1") self.assertEqual(result[2], "order2")
def run(self, client): while self._keep_alive: trade = match_orders() if trade is not None: client.publish(json.dumps(trade)) else: time.sleep(0.1) def stop(self): self._keep_alive = False mrunner = MatchRunner() trade_mq_client = AsyncMQPublisher(CLIENT_BROKER_URL, mrunner.run, exchange=EXCHANGE, exchange_type=EXCHANGE_TYPE, routing_key=TRADE_ROUTING_KEY, content_type='text/plain') def sort_orders_by_priority(bid, ask): """ Sort the two orders given by priority then by time. Will return a set of both with the items in descending order. :param Order bid: :param Order ask: :return: a set of two orders in descending priority """ if bid.priority < ask.priority: return bid, ask elif ask.priority < bid.priority:
while self._keep_alive: trade = match_orders() if trade is not None: client.publish(json.dumps(trade)) else: time.sleep(0.1) def stop(self): self._keep_alive = False mrunner = MatchRunner() trade_mq_client = AsyncMQPublisher(CLIENT_BROKER_URL, mrunner.run, exchange=EXCHANGE, exchange_type=EXCHANGE_TYPE, routing_key=TRADE_ROUTING_KEY, content_type='text/plain') def sort_orders_by_priority(bid, ask): """ Sort the two orders given by priority then by time. Will return a set of both with the items in descending order. :param Order bid: :param Order ask: :return: a set of two orders in descending priority """ if bid.priority < ask.priority: return bid, ask elif ask.priority < bid.priority: