Parcourir la source

Remove empty queue after AMQP result is received and make sure that it won't be re-created by using cache.

Piotr Sikora il y a 14 ans
Parent
commit
9c4e544629
1 fichiers modifiés avec 4 ajouts et 0 suppressions
  1. 4 0
      celery/backends/amqp.py

+ 4 - 0
celery/backends/amqp.py

@@ -123,6 +123,9 @@ class AMQPBackend(BaseDictBackend):
         return result
 
     def get_task_meta(self, task_id, cache=True):
+        if cache and task_id in self._cache:
+            return self._cache[task_id]
+
         return self.poll(task_id)
 
     def wait_for(self, task_id, timeout=None, cache=True):
@@ -148,6 +151,7 @@ class AMQPBackend(BaseDictBackend):
         result = consumer.fetch()
         try:
             if result:
+                consumer.queue_delete(True, True)
                 payload = self._cache[task_id] = result.payload
                 return payload
             else: