Просмотр исходного кода

backend.process_cleanup now called *after* execution

Ask Solem 15 лет назад
Родитель
Сommit
07aefb8d0a
1 измененных файлов с 4 добавлено и 2 удалено
  1. 4 2
      celery/worker/job.py

+ 4 - 2
celery/worker/job.py

@@ -94,10 +94,12 @@ class WorkerTaskTrace(TaskTrace):
     def execute(self):
     def execute(self):
         """Execute, trace and store the result of the task."""
         """Execute, trace and store the result of the task."""
         self.loader.on_task_init(self.task_id, self.task)
         self.loader.on_task_init(self.task_id, self.task)
-        self.task.backend.process_cleanup()
         if self.task.track_started:
         if self.task.track_started:
             self.task.backend.mark_as_started(self.task_id)
             self.task.backend.mark_as_started(self.task_id)
-        return super(WorkerTaskTrace, self).execute()
+        try:
+            return super(WorkerTaskTrace, self).execute()
+        finally:
+            self.task.backend.process_cleanup()
 
 
     def handle_success(self, retval, *args):
     def handle_success(self, retval, *args):
         """Handle successful execution."""
         """Handle successful execution."""