浏览代码

add_task_queue must account for Queues.__missing__. Closes #1079

Ask Solem 12 年之前
父节点
当前提交
cd8ca4ab27
共有 1 个文件被更改,包括 6 次插入2 次删除
  1. 6 2
      celery/worker/consumer.py

+ 6 - 2
celery/worker/consumer.py

@@ -820,9 +820,13 @@ class Consumer(object):
     def add_task_queue(self, queue, exchange=None, exchange_type=None,
             routing_key=None, **options):
         cset = self.task_consumer
-        try:
+        queues = self.app.amqp.queues
+        # Must use in' here, as __missing__ will automatically
+        # create queues when CELERY_CREATE_MISSING_QUEUES is enabled.
+        # (Issue #1079)
+        if queue in queues:
             q = self.app.amqp.queues[queue]
-        except KeyError:
+        else:
             exchange = queue if exchange is None else exchange
             exchange_type = 'direct' if exchange_type is None \
                                      else exchange_type