在 Python Celery 中链接任务而不传递先前的结果

问题描述 投票:0回答:1

我想创建一个异步事件链,一个接一个地执行,但我对将前一个事件的结果传递给下一个事件不感兴趣,只需在链中执行它们即可。我有这样的事情:

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
没有做任何事情,而是我将上一个任务的结果传递给下一个任务,这使得第二个任务失败。无论如何,只是使任务链接起来,而不向以下任务添加任何其他参数?

python celery celery-task
1个回答
0
投票

如果您不想传递结果,可以使用不可变签名,而不是“常规”签名。

© www.soinside.com 2019 - 2024. All rights reserved.