Browse Source

add_consumer command now uses queue config from CELERY_QUEUES if it exists

Ask Solem 12 years ago
parent
commit
0cf8045b54
1 changed files with 8 additions and 4 deletions
  1. 8 4
      celery/worker/consumer.py

+ 8 - 4
celery/worker/consumer.py

@@ -767,14 +767,18 @@ class Consumer(object):
     def add_task_queue(self, queue, exchange=None, exchange_type=None,
             routing_key=None, **options):
         cset = self.task_consumer
-        exchange = queue if exchange is None else exchange
-        routing_key = queue if routing_key is None else routing_key
-        exchange_type = 'direct' if exchange_type is None else exchange_type
-        if not cset.consuming_from(queue):
+        try:
+            q = self.app.amqp.queues[queue]
+        except KeyError:
+            exchange = queue if exchange is None else exchange
+            routing_key = queue if routing_key is None else routing_key
+            exchange_type = 'direct' if exchange_type is None \
+                                     else exchange_type
             q = self.app.amqp.queues.add(queue,
                     exchange=exchange,
                     exchange_type=exchange_type,
                     routing_key=routing_key, **options)
+        if not cset.consuming_from(queue):
             cset.add_queue(q)
             cset.consume()
             logger.info('Started consuming from %r', queue)