示例#1
0
 def test_consuming_from(self):
     consumer = self.connection.Consumer()
     consumer.queues[:] = [Queue("a"), Queue("b")]
     self.assertFalse(consumer.consuming_from(Queue("c")))
     self.assertFalse(consumer.consuming_from("c"))
     self.assertTrue(consumer.consuming_from(Queue("a")))
     self.assertTrue(consumer.consuming_from(Queue("b")))
     self.assertTrue(consumer.consuming_from("b"))
示例#2
0
 def test_consuming_from(self):
     consumer = self.connection.Consumer()
     consumer.queues[:] = [Queue('a'), Queue('b')]
     self.assertFalse(consumer.consuming_from(Queue('c')))
     self.assertFalse(consumer.consuming_from('c'))
     self.assertTrue(consumer.consuming_from(Queue('a')))
     self.assertTrue(consumer.consuming_from(Queue('b')))
     self.assertTrue(consumer.consuming_from('b'))
示例#3
0
    def test_eq(self):
        q1 = Queue("xxx", Exchange("xxx", "direct"), "xxx")
        q2 = Queue("xxx", Exchange("xxx", "direct"), "xxx")
        self.assertEqual(q1, q2)
        self.assertFalse(q1.__eq__(True))

        q3 = Queue("yyy", Exchange("xxx", "direct"), "xxx")
        self.assertNotEqual(q1, q3)
示例#4
0
    def test_eq(self):
        q1 = Queue('xxx', Exchange('xxx', 'direct'), 'xxx')
        q2 = Queue('xxx', Exchange('xxx', 'direct'), 'xxx')
        self.assertEqual(q1, q2)
        self.assertFalse(q1.__eq__(True))

        q3 = Queue('yyy', Exchange('xxx', 'direct'), 'xxx')
        self.assertNotEqual(q1, q3)
示例#5
0
 def test_purge(self):
     channel = self.connection.channel()
     b1 = Queue("qname1", self.exchange, "rkey")
     b2 = Queue("qname2", self.exchange, "rkey")
     b3 = Queue("qname3", self.exchange, "rkey")
     b4 = Queue("qname4", self.exchange, "rkey")
     consumer = Consumer(channel, [b1, b2, b3, b4], auto_declare=True)
     consumer.purge()
     self.assertEqual(channel.called.count("queue_purge"), 4)
示例#6
0
 def setUp(self):
     self.c = Connection(transport='memory')
     self.e = Exchange('test_transport_memory')
     self.q = Queue('test_transport_memory',
                    exchange=self.e,
                    routing_key='test_transport_memory')
     self.q2 = Queue('test_transport_memory2',
                     exchange=self.e,
                     routing_key='test_transport_memory2')
示例#7
0
 def setUp(self):
     self.c = BrokerConnection(transport="memory")
     self.e = Exchange("test_transport_memory")
     self.q = Queue("test_transport_memory",
                    exchange=self.e,
                    routing_key="test_transport_memory")
     self.q2 = Queue("test_transport_memory2",
                     exchange=self.e,
                     routing_key="test_transport_memory2")
示例#8
0
 def test_purge(self):
     channel = self.connection.channel()
     b1 = Queue('qname1', self.exchange, 'rkey')
     b2 = Queue('qname2', self.exchange, 'rkey')
     b3 = Queue('qname3', self.exchange, 'rkey')
     b4 = Queue('qname4', self.exchange, 'rkey')
     consumer = Consumer(channel, [b1, b2, b3, b4], auto_declare=True)
     consumer.purge()
     self.assertEqual(channel.called.count('queue_purge'), 4)
示例#9
0
 def test_multiple_queues(self):
     channel = self.connection.channel()
     b1 = Queue("qname1", self.exchange, "rkey")
     b2 = Queue("qname2", self.exchange, "rkey")
     b3 = Queue("qname3", self.exchange, "rkey")
     b4 = Queue("qname4", self.exchange, "rkey")
     consumer = Consumer(channel, [b1, b2, b3, b4])
     consumer.consume()
     self.assertEqual(channel.called.count("exchange_declare"), 4)
     self.assertEqual(channel.called.count("queue_declare"), 4)
     self.assertEqual(channel.called.count("queue_bind"), 4)
     self.assertEqual(channel.called.count("basic_consume"), 4)
     self.assertEqual(len(consumer._active_tags), 4)
     consumer.cancel()
     self.assertEqual(channel.called.count("basic_cancel"), 4)
     self.assertFalse(len(consumer._active_tags))
示例#10
0
    def _connect(self, channel):
        self._queue = Queue(channel=channel, **self._queue_kwargs)
        self._queue.declare()

        self._consumer = Consumer(channel, [self._queue],
            callbacks=[self._callback])
        self._consumer.consume()
示例#11
0
 def test_multiple_queues(self):
     channel = self.connection.channel()
     b1 = Queue('qname1', self.exchange, 'rkey')
     b2 = Queue('qname2', self.exchange, 'rkey')
     b3 = Queue('qname3', self.exchange, 'rkey')
     b4 = Queue('qname4', self.exchange, 'rkey')
     consumer = Consumer(channel, [b1, b2, b3, b4])
     consumer.consume()
     self.assertEqual(channel.called.count('exchange_declare'), 4)
     self.assertEqual(channel.called.count('queue_declare'), 4)
     self.assertEqual(channel.called.count('queue_bind'), 4)
     self.assertEqual(channel.called.count('basic_consume'), 4)
     self.assertEqual(len(consumer._active_tags), 4)
     consumer.cancel()
     self.assertEqual(channel.called.count('basic_cancel'), 4)
     self.assertFalse(len(consumer._active_tags))
示例#12
0
def worker_direct(hostname):
    if isinstance(hostname, Queue):
        return hostname
    return Queue(WORKER_DIRECT_QUEUE_FORMAT.format(hostname=hostname),
                 WORKER_DIRECT_EXCHANGE,
                 hostname,
                 auto_delete=True)
示例#13
0
 def test_set_callbacks(self):
     channel = self.connection.channel()
     queue = Queue('qname', self.exchange, 'rkey')
     callbacks = [lambda x, y: x,
                  lambda x, y: x]
     consumer = Consumer(channel, queue, auto_declare=True,
                         callbacks=callbacks)
     self.assertEqual(consumer.callbacks, callbacks)
示例#14
0
 def test_declare(self):
     chan = get_conn().channel()
     b = Queue('foo', self.exchange, 'foo', channel=chan)
     self.assertTrue(b.is_bound)
     b.declare()
     self.assertIn('exchange_declare', chan)
     self.assertIn('queue_declare', chan)
     self.assertIn('queue_bind', chan)
示例#15
0
 def setUp(self):
     self.__conn = Connection(transport=Transport)
     self.__conn.connect()
     self.__exchange = Exchange('test_exchange')
     self.__routing_key = 'test.routing'
     self.__queue = Queue('test_queue',
                          self.__exchange,
                          routing_key=self.__routing_key)
示例#16
0
    def test_decode_error(self):
        channel = self.connection.channel()
        b1 = Queue('qname1', self.exchange, 'rkey')
        consumer = Consumer(channel, [b1])
        consumer.channel.throw_decode_error = True

        with self.assertRaises(ValueError):
            consumer._receive_callback({'foo': 'bar'})
示例#17
0
 def test_consume__cancel(self):
     channel = self.connection.channel()
     queue = Queue("qname", self.exchange, "rkey")
     consumer = Consumer(channel, queue, auto_declare=True)
     consumer.consume()
     consumer.cancel()
     self.assertIn("basic_cancel", channel)
     self.assertFalse(consumer._active_tags)
示例#18
0
 def test_declare(self):
     chan = get_conn().channel()
     b = Queue("foo", self.exchange, "foo", channel=chan)
     self.assertTrue(b.is_bound)
     b.declare()
     self.assertIn("exchange_declare", chan)
     self.assertIn("queue_declare", chan)
     self.assertIn("queue_bind", chan)
示例#19
0
    def test_decode_error(self):
        channel = self.connection.channel()
        b1 = Queue("qname1", self.exchange, "rkey")
        consumer = Consumer(channel, [b1])
        consumer.channel.throw_decode_error = True

        with self.assertRaises(ValueError):
            consumer._receive_callback({"foo": "bar"})
示例#20
0
    def test_declare_but_no_exchange(self):
        q = Queue("a")
        q.queue_declare = Mock()
        q.queue_bind = Mock()
        q.exchange = None

        q.declare()
        q.queue_declare.assert_called_with(False, passive=False)
        q.queue_bind.assert_called_with(False)
示例#21
0
 def test_revive(self):
     channel = self.connection.channel()
     b1 = Queue("qname1", self.exchange, "rkey")
     consumer = Consumer(channel, [b1])
     channel2 = self.connection.channel()
     consumer.revive(channel2)
     self.assertIs(consumer.channel, channel2)
     self.assertIs(consumer.queues[0].channel, channel2)
     self.assertIs(consumer.queues[0].exchange.channel, channel2)
示例#22
0
 def test_also_binds_exchange(self):
     chan = get_conn().channel()
     b = Queue("foo", self.exchange)
     self.assertFalse(b.is_bound)
     self.assertFalse(b.exchange.is_bound)
     b = b.bind(chan)
     self.assertTrue(b.is_bound)
     self.assertTrue(b.exchange.is_bound)
     self.assertIs(b.channel, b.exchange.channel)
     self.assertIsNot(b.exchange, self.exchange)
示例#23
0
 def test___enter____exit__(self):
     channel = self.connection.channel()
     queue = Queue("qname", self.exchange, "rkey")
     consumer = Consumer(channel, queue, auto_declare=True)
     context = consumer.__enter__()
     self.assertIs(context, consumer)
     self.assertTrue(consumer._active_tags)
     consumer.__exit__()
     self.assertIn("basic_cancel", channel)
     self.assertFalse(consumer._active_tags)
示例#24
0
 def test___enter____exit__(self):
     channel = self.connection.channel()
     queue = Queue('qname', self.exchange, 'rkey')
     consumer = Consumer(channel, queue, auto_declare=True)
     context = consumer.__enter__()
     self.assertIs(context, consumer)
     self.assertTrue(consumer._active_tags)
     res = consumer.__exit__(None, None, None)
     self.assertFalse(res)
     self.assertIn('basic_cancel', channel)
     self.assertFalse(consumer._active_tags)
示例#25
0
    def test_basic_reject__requeue(self):
        channel = self.connection.channel()
        b1 = Queue('qname1', self.exchange, 'rkey')
        consumer = Consumer(channel, [b1])

        def callback(message_data, message):
            message.requeue()

        consumer.register_callback(callback)
        consumer._receive_callback({'foo': 'bar'})
        self.assertIn('basic_reject:requeue', channel)
示例#26
0
    def test_basic_reject__requeue(self):
        channel = self.connection.channel()
        b1 = Queue("qname1", self.exchange, "rkey")
        consumer = Consumer(channel, [b1])

        def callback(message_data, message):
            message.requeue()

        consumer.register_callback(callback)
        consumer._receive_callback({"foo": "bar"})
        self.assertIn("basic_reject:requeue", channel)
示例#27
0
    def test_basic_ack_twice(self):
        channel = self.connection.channel()
        b1 = Queue("qname1", self.exchange, "rkey")
        consumer = Consumer(channel, [b1])

        def callback(message_data, message):
            message.ack()
            message.ack()

        consumer.register_callback(callback)
        with self.assertRaises(MessageStateError):
            consumer._receive_callback({"foo": "bar"})
示例#28
0
    def test_basic_reject_twice(self):
        channel = self.connection.channel()
        b1 = Queue('qname1', self.exchange, 'rkey')
        consumer = Consumer(channel, [b1])

        def callback(message_data, message):
            message.reject()
            message.reject()

        consumer.register_callback(callback)
        with self.assertRaises(MessageStateError):
            consumer._receive_callback({'foo': 'bar'})
        self.assertIn('basic_reject', channel)
示例#29
0
文件: __init__.py 项目: WoLpH/celery
 def __init__(self, connection, handlers=None, routing_key="#",
         node_id=None, app=None):
     self.app = app_or_default(app)
     self.connection = connection
     if handlers is not None:
         self.handlers = handlers
     self.routing_key = routing_key
     self.node_id = node_id or gen_unique_id()
     self.queue = Queue("%s.%s" % ("celeryev", self.node_id),
                        exchange=event_exchange,
                        routing_key=self.routing_key,
                        auto_delete=True,
                        durable=False)
示例#30
0
def worker_direct(hostname):
    """Returns :class:`kombu.Queue` that is a direct route to
    a worker by hostname.

    :param hostname: The fully qualified node name of a worker
                     (e.g. ``[email protected]``).  If passed a
                     :class:`kombu.Queue` instance it will simply return
                     that instead.
    """
    if isinstance(hostname, Queue):
        return hostname
    return Queue(WORKER_DIRECT_QUEUE_FORMAT.format(hostname=hostname),
                 WORKER_DIRECT_EXCHANGE,
                 hostname, auto_delete=True)