Explorar o código

celery.execute.apply: Should return exception, not ExceptionInfo on error.
Closes #111. Thanks to jonozzz

Ask Solem %!s(int64=15) %!d(string=hai) anos
pai
achega
3ef777fb66
Modificáronse 2 ficheiros con 4 adicións e 1 borrados
  1. 3 0
      celery/execute/__init__.py
  2. 1 1
      celery/result.py

+ 3 - 0
celery/execute/__init__.py

@@ -5,6 +5,7 @@ from celery.execute.trace import TaskTrace
 from celery.registry import tasks
 from celery.messaging import with_connection
 from celery.messaging import TaskPublisher
+from celery.datastructures import ExceptionInfo
 
 extract_exec_options = mattrgetter("routing_key", "exchange",
                                    "immediate", "mandatory",
@@ -161,4 +162,6 @@ def apply(task, args, kwargs, **options):
 
     trace = TaskTrace(task.name, task_id, args, kwargs, task=task)
     retval = trace.execute()
+    if isinstance(retval, ExceptionInfo):
+        retval = retval.exception
     return EagerResult(task_id, retval, trace.status, traceback=trace.strtb)

+ 1 - 1
celery/result.py

@@ -371,7 +371,7 @@ class EagerResult(BaseAsyncResult):
         if self.status == states.SUCCESS:
             return self.result
         elif self.status == states.FAILURE:
-            raise self.result.exception
+            raise self.result
 
     def revoke(self):
         pass