Parcourir la source

Catch channel errors when deleting result queue with if_empty=True

Ask Solem il y a 14 ans
Parent
commit
1b8e2777d1
1 fichiers modifiés avec 4 ajouts et 1 suppressions
  1. 4 1
      celery/backends/amqp.py

+ 4 - 1
celery/backends/amqp.py

@@ -150,7 +150,10 @@ class AMQPBackend(BaseDictBackend):
             binding = self._create_binding(task_id)(channel)
             result = binding.get()
             if result:
-                binding.delete(if_unused=True, if_empty=True, nowait=True)
+                try:
+                    binding.delete(if_unused=True, if_empty=True, nowait=True)
+                except conn.channel_errors:
+                    pass
                 payload = self._cache[task_id] = result.payload
                 return payload
             elif task_id in self._cache: