Celery是否使用结果后端结合链和组的方式?

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

在我的Python项目中,我想使用Celery来创建任务的流水线:一些任务将被分组,而这个组是链的一部分。管道的模式。

 task_chain = chain(
    group(
        chain(taks1.s(uid=uid, index=i), task2.s(uid=uid, index=i)) for i in
        range(len(collection))
    ),
    task3.s(uid=uid),
    task4.s(uid=uid),
    reduce_job_results_from_pages.s(job_uid=job_uid),
    push_metrics.s(job_uid=job_uid))

I don't understand what technology celery use to sync results of tasks and pass result of previous task or group of tasks to next one in chain. Thank you!

谢谢你

python celery
1个回答
1
投票

答案在 重要注意事项 帆布页面上的部分。

在和弦中使用的任务不能忽略其结果。实际上,这意味着您必须启用 result_backend 才能使用和弦。此外,如果在配置中task_ignore_result被设置为True,请确保在和弦中使用的单个任务被定义为ignore_result=False。这适用于任务子类和装饰任务。

你可能会想,既然你没有使用Chord,那么你可以不使用它。- 我相信Celery会将任何带有Group的Chain转化为Chord。

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