celery_tasktree一般不支持DAG工作流程。还有其他选择吗?

时间:2017-03-30 21:55:27

标签: celery workflow directed-acyclic-graphs

与芹菜工作流程调度程序(https://pypi.python.org/pypi/celery-tasktree)相比,

celery_tasktree(http://docs.celeryproject.org/en/latest/userguide/canvas.html)提供了更清晰的工作流程画布。但是,它仅支持树状工作流结构,而不支持类似DAG的一般工作流。 Celery工作流程确实有“和弦”方法,但使用起来似乎很麻烦。

是否还有其他基于芹菜的库类似于celery_tasktree,它适用于一般的DAG工作流程?

1 个答案:

答案 0 :(得分:1)

以下是一些支持基于DAG的作业调度程序的库。

https://github.com/thieman/dagobah

https://github.com/apache/incubator-airflow

它们不是以芹菜为基础的。但是,您可以在celery中创建自己的基元来转发可用于构建DAG作业调度程序的结果。

@app.task(bind=True)
def forward(self, result, sig):
    # convert JSON serialized signature back to Signature
    sig = self.app.signature(sig)
    # get the return value of the provided task signature
    result2 = sig()
    # next task will receive tuple of (result_A, result_B)
    return (result, result2)


@app.task
def C(self, Ares_Bres)):
    Ares, Bres = Ares__Bres
    return Ares + Bres

workflow = (A.s() | forward.s(B.s()) | C.s())

See here进行更详细的讨论。