|
@@ -129,6 +129,28 @@ class TraceInfo(object):
|
|
|
|
|
|
def build_tracer(name, task, loader=None, hostname=None, store_errors=True,
|
|
|
Info=TraceInfo, eager=False, propagate=False):
|
|
|
+ """Builts a function that tracing the tasks execution; catches all
|
|
|
+ exceptions, and saves the state and result of the task execution
|
|
|
+ to the result backend.
|
|
|
+
|
|
|
+ If the call was successful, it saves the result to the task result
|
|
|
+ backend, and sets the task status to `"SUCCESS"`.
|
|
|
+
|
|
|
+ If the call raises :exc:`~celery.exceptions.RetryTaskError`, it extracts
|
|
|
+ the original exception, uses that as the result and sets the task status
|
|
|
+ to `"RETRY"`.
|
|
|
+
|
|
|
+ If the call results in an exception, it saves the exception as the task
|
|
|
+ result, and sets the task status to `"FAILURE"`.
|
|
|
+
|
|
|
+ Returns a function that takes the following arguments:
|
|
|
+
|
|
|
+ :param uuid: The unique id of the task.
|
|
|
+ :param args: List of positional args to pass on to the function.
|
|
|
+ :param kwargs: Keyword arguments mapping to pass on to the function.
|
|
|
+ :keyword request: Request dict.
|
|
|
+
|
|
|
+ """
|
|
|
# If the task doesn't define a custom __call__ method
|
|
|
# we optimize it away by simply calling the run method directly,
|
|
|
# saving the extra method call and a line less in the stack trace.
|