Browse Source

Don't mark tasks as revoked if CELERY_IGNORE_RESULT=True. Closes #207. Thanks to rlotun

Ask Solem 14 years ago
parent
commit
c5755a2987
2 changed files with 5 additions and 2 deletions
  1. 0 1
      celery/worker/control/builtins.py
  2. 5 1
      celery/worker/job.py

+ 0 - 1
celery/worker/control/builtins.py

@@ -32,7 +32,6 @@ def revoke(panel, task_id, task_name=None, **kwargs):
             backend = tasks[task_name].backend
         except KeyError:
             pass
-    backend.mark_as_revoked(task_id)
     panel.logger.warn("Task %s revoked" % (task_id, ))
     return {"ok": "task %s revoked" % (task_id, )}
 

+ 5 - 1
celery/worker/job.py

@@ -234,11 +234,15 @@ class TaskRequest(object):
         self.email_body = email_body or self.email_body
 
         self.task = tasks[self.task_name]
+        self._store_errors = True
+        if self.task.ignore_result:
+            self._store_errors = self.task.store_errors_even_if_ignored
 
     def maybe_expire(self):
         if self.expires and datetime.now() > self.expires:
             state.revoked.add(self.task_id)
-            self.task.backend.mark_as_revoked(self.task_id)
+            if self._store_errors:
+                self.task.backend.mark_as_revoked(self.task_id)
 
     def revoked(self):
         if self._already_revoked: