如何将参数传递给 celery 的任务?

Ser*_*ash 7 python redis celery

对于我的网络应用程序,我使用celery后端redis。如果我有任务的ID,官方FAQ会通过以下方式获取任务的结果。

result = my_task.AsyncResult(task_id)
result.get()
Run Code Online (Sandbox Code Playgroud)

我可以轻松访问任务主体中的参数:

@app.task
def my_task(foo, bar, baz=None):
    kwargs = self.request.kwargs
    args = self.request.args
Run Code Online (Sandbox Code Playgroud)

有没有办法从 AsyncResult 或任何只有任务 ID 的地方获取args和获取?kwargs

Jos*_*ñez 5

对于新的 Celery 版本,您可以激活“result_extended”并从任务对象获取参数:

app.conf.update(
   result_extended=True
)
Run Code Online (Sandbox Code Playgroud)

然后,只需:

print(task.args)
Run Code Online (Sandbox Code Playgroud)