3

是否可以在每次调用的基础上忽略任务结果?

例如,当我在网络请求期间运行任务时,我可以忽略它们的结果,但是当我以交互方式运行任务时等待结果(可能有,例如,调试信息)?

我知道 Tasks 有ignore_result标志,但我特别想知道是否可以ignore_result在每次调用的基础上进行设置(而不是“全局”基础)。

4

2 回答 2

1

通常不会,因为 ignore_result 是 Task 的一个属性,只有工作人员使用(决定是否发回结果)。

但是,如果您使用自己的任务参数(避免将其称为 ignore_result),并让任务基于此设置其 ignore_result,则可以这样做:

task mytask(please_ignore_result):
    mytask.ignore_result = please_ignore_result
于 2011-05-25T20:48:06.270 回答
0

您可以ignore_result=True/False在通话时使用apply_asyncdelay

@app.task 
def hello():
    print('hello world')

# storing/rejecting results per invocation basis    
res = hello.apply_async(ignore_result=True)
res1 = hello.apply_async(ignore_result=False)

如果您运行的是旧版本的 celery,您可能会遇到此错误。您可以在此处阅读有关如何ignore_result更详细地使用的文档

于 2021-10-04T18:12:08.213 回答