Browse Source

Catch channel errors when deleting result queue with if_empty=True

Ask Solem 14 năm trước cách đây
mục cha
commit
1b8e2777d1
1 tập tin đã thay đổi với 4 bổ sung1 xóa
  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: