예제 #1
0
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()
예제 #2
0
파일: queue.py 프로젝트: deginner/mq-client
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")
예제 #3
0
    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:
예제 #4
0
        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: