Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将参数传递给芹菜';什么任务?_Python_Redis_Celery - Fatal编程技术网

Python 如何将参数传递给芹菜';什么任务?

Python 如何将参数传递给芹菜';什么任务?,python,redis,celery,Python,Redis,Celery,对于我的web应用程序,我使用芹菜和redis后端。如果我有任务的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

对于我的web应用程序,我使用
芹菜
redis
后端。如果我有任务的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\u 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

另一方面,如果您的任务成功执行,您将只有结果,并且您无法收回您的参数,因为这些信息已被代理的工作人员使用和处理。

对于新的芹菜版本,您可以激活“结果扩展”并从任务对象获取参数:

app.conf.update(
   result_extended=True
)
然后,只是:

print(task.args)

问题是,我需要这些参数,不仅仅是在任务成功/失败之后,而是在一周之后,直到它们在redis中过期。现在我认为这是不可能的,因为芹菜不会将它们保存到后端。您可以使用任务id组合在redis中显式保存参数。@chillarand,只有在使用redis时才可以?其他后端如何?它也应该适用于其他后端@用户528025