Browse Source

use reject+requeue=False when redelivered is not known, so that a dead letter queue can be used

Michael Permana 9 years ago
parent
commit
45c9825492
1 changed files with 5 additions and 6 deletions
  1. 5 6
      celery/worker/request.py

+ 5 - 6
celery/worker/request.py

@@ -353,12 +353,11 @@ class Request(object):
                 )
         # (acks_late) acknowledge after result stored.
         if self.task.acks_late:
-            reject_and_requeue = (
-                self.task.reject_on_worker_lost and
-                isinstance(exc, WorkerLostError) and
-                self.delivery_info.get('redelivered', False) is False)
-            if reject_and_requeue:
-                self.reject(requeue=True)
+            requeue = self.delivery_info.get('redelivered', None) is False
+            reject = (self.task.reject_on_worker_lost and
+                isinstance(exc, WorkerLostError))
+            if reject:
+                self.reject(requeue=requeue)
             else:
                 self.acknowledge()