如何将参数传递给芹菜的任务?
How to get arguments passed to the celery's task?
对于我的 Web 应用程序,我使用 celery
和 redis
后端。官方FAQ目的是在我有任务ID的情况下通过以下方式获取任务结果。
result = my_task.AsyncResult(task_id)
result.get()
我可以轻松访问任务主体中的参数:
@app.task
def my_task(foo, bar, baz=None):
kwargs = self.request.kwargs
args = self.request.args
有没有办法从 AsyncResult 或任何只有任务 ID 的地方获取 args
和 kwargs
?
如果任务处于挂起状态或当前正在执行,您可以看到任务的参数。
如果您想获取失败任务的参数,您可以使用 on_failure
处理程序设置自定义基础任务以在任务失败时获取参数。
from celery import Task
class CustomBaseTask(Task):
def on_failure(self, exc, task_id, args, kwargs, einfo):
print(args)
@app.task(base=CustomBaseTask)
def add(x, y):
raise error
另一方面,如果您的任务执行成功,您将只有结果,您无法取回您的参数,因为该信息已被经纪人的工作人员使用和处理。
对于新的 Celery 版本,您可以激活“result_extended”并从任务对象获取参数:
app.conf.update(
result_extended=True
)
然后,只需:
print(task.args)
对于我的 Web 应用程序,我使用 celery
和 redis
后端。官方FAQ目的是在我有任务ID的情况下通过以下方式获取任务结果。
result = my_task.AsyncResult(task_id)
result.get()
我可以轻松访问任务主体中的参数:
@app.task
def my_task(foo, bar, baz=None):
kwargs = self.request.kwargs
args = self.request.args
有没有办法从 AsyncResult 或任何只有任务 ID 的地方获取 args
和 kwargs
?
如果任务处于挂起状态或当前正在执行,您可以看到任务的参数
如果您想获取失败任务的参数,您可以使用 on_failure
处理程序设置自定义基础任务以在任务失败时获取参数。
from celery import Task
class CustomBaseTask(Task):
def on_failure(self, exc, task_id, args, kwargs, einfo):
print(args)
@app.task(base=CustomBaseTask)
def add(x, y):
raise error
另一方面,如果您的任务执行成功,您将只有结果,您无法取回您的参数,因为该信息已被经纪人的工作人员使用和处理。
对于新的 Celery 版本,您可以激活“result_extended”并从任务对象获取参数:
app.conf.update(
result_extended=True
)
然后,只需:
print(task.args)