如何让 运行 非依赖的兄弟任务按顺序进行?

How to run non-dependent sibling tasks sequentially?

假设我有一个包含 4 个任务的 dag,如果我们只关心它们的顺序,结构将或多或少像这样 运行:

t1.set_downstream(t2)
t2.set_downstream(t3)
t3.set_downstream(t4)

这让我 运行 任务顺序 t1 -> t2 -> t3 -> t4

我的问题是,我希望它们按上述顺序 运行,但我希望 t4 在且仅当 t3 失败时忽略。

即:如果我们只关心依赖关系,图表将如下所示

t1.set_downstream(t2)
t2.set_downstream(t3)
t2.set_downstream(t4)

我该怎么做才能同时拥有这两种情况? 我目前的选择是将 t4 的触发规则设置为 all_done,但是,如果 t1 或 t2 失败,我不想将其设置为 运行。

有什么想法吗?这可能吗?

您可以使用 BranchOperator to add the logic you are looking for. Or even create your own SkipOperator based on SkipMixin.