是否可以在每次调用的基础上忽略任务结果?
例如,当我在网络请求期间运行任务时,我可以忽略它们的结果,但是当我以交互方式运行任务时等待结果(可能有,例如,调试信息)?
我知道 Tasks 有ignore_result
标志,但我特别想知道是否可以ignore_result
在每次调用的基础上进行设置(而不是“全局”基础)。
通常不会,因为 ignore_result 是 Task 的一个属性,只有工作人员使用(决定是否发回结果)。
但是,如果您使用自己的任务参数(避免将其称为 ignore_result),并让任务基于此设置其 ignore_result,则可以这样做:
task mytask(please_ignore_result):
mytask.ignore_result = please_ignore_result
您可以ignore_result=True/False
在通话时使用apply_async
或delay
@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
更详细地使用的文档