我想创建一个异步事件链,一个接一个地执行,但我对将前一个事件的结果传递给下一个事件不感兴趣,只需在链中执行它们即可。我有这样的事情:
tasks = []
for document_id in document_ids:
tasks.append(
utils.task(
'tasks.update_document',
document_id=document_id,
),
)
result = chain(*tasks).apply_async(ignore_result=True)
我接收这个的任务是这样的:
@app.task
def update_document(document_id, *args,**kwargs):
if not isinstance(my_variable, int):
raise TypeError
return f'Done: {document_id}'
但是似乎
ignore_result=True
没有做任何事情,而是我将上一个任务的结果传递给下一个任务,这使得第二个任务失败。无论如何,只是使任务链接起来,而不向以下任务添加任何其他参数?
如果您不想传递结果,可以使用不可变签名,而不是“常规”签名。