|
@@ -8,6 +8,7 @@ from datetime import datetime
|
|
|
|
|
|
from celery import platform
|
|
|
from celery.app import app_or_default
|
|
|
+from celery.concurrency.processes.pool import WorkerLostError
|
|
|
from celery.datastructures import ExceptionInfo
|
|
|
from celery.exceptions import SoftTimeLimitExceeded, TimeLimitExceeded
|
|
|
from celery.execute.trace import TaskTrace
|
|
@@ -435,6 +436,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,
|