You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在不阻塞执行的情况下删除Chord执行后的中间结果?

需求流程
  • 并行分发多个任务(multiple tasks)
  • 将所有任务结果聚合(Aggregate)为最终结果
  • 在Chord结果就绪后立即删除中间结果(intermediate results),且不阻塞执行

中间结果的问题所在?

使用CouchDB作为结果后端,它不支持TTL特性。由于仅需聚合后的结果,中间结果往往体积庞大且冗余。

预期实现示例草图

from celery import chord

@app.task
def worker_task(arg):
    return compute_something(arg)

@app.task
def aggregate(results):
    return sum(results)

def cleanup(final_result):
    for r in final_result.parent.results:
        r.forget()

promise = chord((worker_task.s(arg) for arg in inputs))(aggregate.s())

promise.then(cleanup)

附:AsyncResult实际上有then()方法,但我不清楚如何使用它。

内容的提问来源于stack exchange,提问作者Temax

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 12:42:02