def apply(task, args, kwargs, **options): """Apply the task locally. This will block until the task completes, and returns a :class:`celery.result.EagerResult` instance. """ args = args or [] kwargs = kwargs or {} task_id = options.get("task_id", gen_unique_id()) retries = options.get("retries", 0) task = tasks[task.name] # Make sure we get the instance, not class. default_kwargs = {"task_name": task.name, "task_id": task_id, "task_retries": retries, "task_is_eager": True, "logfile": None, "loglevel": 0} supported_keys = fun_takes_kwargs(task.run, default_kwargs) extend_with = dict((key, val) for key, val in default_kwargs.items() if key in supported_keys) kwargs.update(extend_with) trace = TaskTrace(task.name, task_id, args, kwargs, task=task) retval = trace.execute() return EagerResult(task_id, retval, trace.status, traceback=trace.strtb)
def apply(self, args=None, kwargs=None, **options): """Execute this task locally, by blocking until the task returns. :param args: positional arguments passed on to the task. :param kwargs: keyword arguments passed on to the task. :keyword throw: Re-raise task exceptions. Defaults to the :setting:`CELERY_EAGER_PROPAGATES_EXCEPTIONS` setting. :rtype :class:`celery.result.EagerResult`: See :func:`celery.execute.apply`. """ args = args or [] kwargs = kwargs or {} task_id = options.get("task_id") or gen_unique_id() retries = options.get("retries", 0) throw = self.app.either("CELERY_EAGER_PROPAGATES_EXCEPTIONS", options.pop("throw", None)) # Make sure we get the task instance, not class. task = tasks[self.name] request = {"id": task_id, "retries": retries, "is_eager": True, "logfile": options.get("logfile"), "loglevel": options.get("loglevel", 0), "delivery_info": {"is_eager": True}} if self.accept_magic_kwargs: default_kwargs = {"task_name": task.name, "task_id": task_id, "task_retries": retries, "task_is_eager": True, "logfile": options.get("logfile"), "loglevel": options.get("loglevel", 0), "delivery_info": {"is_eager": True}} supported_keys = fun_takes_kwargs(task.run, default_kwargs) extend_with = dict((key, val) for key, val in default_kwargs.items() if key in supported_keys) kwargs.update(extend_with) trace = TaskTrace(task.name, task_id, args, kwargs, task=task, request=request) retval = trace.execute() if isinstance(retval, ExceptionInfo): if throw: raise retval.exception retval = retval.exception return EagerResult(task_id, retval, trace.status, traceback=trace.strtb)
def apply(self, args=None, kwargs=None, **options): """Execute this task locally, by blocking until the task returns. :param args: positional arguments passed on to the task. :param kwargs: keyword arguments passed on to the task. :keyword throw: Re-raise task exceptions. Defaults to the :setting:`CELERY_EAGER_PROPAGATES_EXCEPTIONS` setting. :rtype :class:`celery.result.EagerResult`: """ args = args or [] kwargs = kwargs or {} task_id = options.get("task_id") or gen_unique_id() retries = options.get("retries", 0) throw = self.app.either("CELERY_EAGER_PROPAGATES_EXCEPTIONS", options.pop("throw", None)) # Make sure we get the task instance, not class. task = tasks[self.name] request = {"id": task_id, "retries": retries, "is_eager": True, "logfile": options.get("logfile"), "loglevel": options.get("loglevel", 0), "delivery_info": {"is_eager": True}} if self.accept_magic_kwargs: default_kwargs = {"task_name": task.name, "task_id": task_id, "task_retries": retries, "task_is_eager": True, "logfile": options.get("logfile"), "loglevel": options.get("loglevel", 0), "delivery_info": {"is_eager": True}} supported_keys = fun_takes_kwargs(task.run, default_kwargs) extend_with = dict((key, val) for key, val in default_kwargs.items() if key in supported_keys) kwargs.update(extend_with) trace = TaskTrace(task.name, task_id, args, kwargs, task=task, request=request, propagate=throw) retval = trace.execute() if isinstance(retval, ExceptionInfo): retval = retval.exception return EagerResult(task_id, retval, trace.status, traceback=trace.strtb)
def apply(task, args, kwargs, **options): """Apply the task locally. :keyword throw: Re-raise task exceptions. Defaults to the :setting:`CELERY_EAGER_PROPAGATES_EXCEPTIONS` setting. This will block until the task completes, and returns a :class:`celery.result.EagerResult` instance. """ args = args or [] kwargs = kwargs or {} task_id = options.get("task_id") or gen_unique_id() retries = options.get("retries", 0) throw = options.pop("throw", conf.EAGER_PROPAGATES_EXCEPTIONS) task = tasks[task.name] # make sure we get the instance, not class. default_kwargs = { "task_name": task.name, "task_id": task_id, "task_retries": retries, "task_is_eager": True, "logfile": options.get("logfile"), "delivery_info": { "is_eager": True }, "loglevel": options.get("loglevel", 0) } supported_keys = fun_takes_kwargs(task.run, default_kwargs) extend_with = dict((key, val) for key, val in default_kwargs.items() if key in supported_keys) kwargs.update(extend_with) trace = TaskTrace(task.name, task_id, args, kwargs, task=task) retval = trace.execute() if isinstance(retval, ExceptionInfo): if throw: raise retval.exception retval = retval.exception return EagerResult(task_id, retval, trace.status, traceback=trace.strtb)
def apply(task, args, kwargs, **options): """Apply the task locally. :keyword throw: Re-raise task exceptions. Defaults to the :setting:`CELERY_EAGER_PROPAGATES_EXCEPTIONS` setting. This will block until the task completes, and returns a :class:`celery.result.EagerResult` instance. """ args = args or [] kwargs = kwargs or {} task_id = options.get("task_id") or gen_unique_id() retries = options.get("retries", 0) throw = options.pop("throw", conf.EAGER_PROPAGATES_EXCEPTIONS) task = tasks[task.name] # make sure we get the instance, not class. default_kwargs = { "task_name": task.name, "task_id": task_id, "task_retries": retries, "task_is_eager": True, "logfile": options.get("logfile"), "delivery_info": {"is_eager": True}, "loglevel": options.get("loglevel", 0), } supported_keys = fun_takes_kwargs(task.run, default_kwargs) extend_with = dict((key, val) for key, val in default_kwargs.items() if key in supported_keys) kwargs.update(extend_with) trace = TaskTrace(task.name, task_id, args, kwargs, task=task) retval = trace.execute() if isinstance(retval, ExceptionInfo): if throw: raise retval.exception retval = retval.exception return EagerResult(task_id, retval, trace.status, traceback=trace.strtb)