Explorar el Código

Store FAILURE result if we get WorkerLostError (worker process disapeared)

Ask Solem hace 14 años
padre
commit
2e3e4457c5
Se han modificado 1 ficheros con 7 adiciones y 0 borrados
  1. 7 0
      celery/worker/job.py

+ 7 - 0
celery/worker/job.py

@@ -8,6 +8,7 @@ from datetime import datetime
 
 from celery import log
 from celery import platform
+from celery.concurrency.processes.pool import WorkerLostError
 from celery.datastructures import ExceptionInfo
 from celery.exceptions import SoftTimeLimitExceeded, TimeLimitExceeded
 from celery.execute.trace import TaskTrace
@@ -434,6 +435,12 @@ class TaskRequest(object):
                                        exception=repr(exc_info.exception),
                                        traceback=exc_info.traceback)
 
+        # This is a special case as the process would not have had
+        # time to write the result.
+        if isinstance(exc_info.exception, WorkerLostError):
+            self.task.backend.mark_as_failure(self.task_id,
+                                              exc_info.exception)
+
         context = {"hostname": self.hostname,
                    "id": self.task_id,
                    "name": self.task_name,