【发布时间】:2021-10-28 01:21:36
【问题描述】:
我有两个主要的分支事件让我绊倒:
- 在 A 之后,只有分支 B 或 C 应该运行。
- 在 B 之后,D 应该有选择地在 E 之前运行。
现在我已经实现了这个,以便 E 具有触发规则“none_failed”,这是为了防止在跳过 D 时跳过 E。此设置适用于所有情况,除非 C 需要运行。在这种情况下,C 和 E 同时运行(您可以通过框颜色看到 B/D 已按预期跳过,但 E 是绿色)。在阅读了触发规则文档后,我明白为什么会发生这种情况(E 的两个父任务都被跳过,因此它运行)。但是我似乎无法弄清楚如何从中获得预期的行为(例如,在运行该分支时保持 B/D/E 的当前行为,但 不要 在 C 时运行 E正在运行)。
对于其他上下文,这不是我的整个 DAG。任务 C 和 E 以 ONE_FAILED 的触发规则汇聚到它们下游的另一个任务中,但为了简单起见,我在示例中省略了这一点。任何想法如何获得预期的行为?
【问题讨论】:
-
B 或 D 失败时 E 不应该运行?
-
没错,E不应该在1.B被跳过,或者2.B或D失败时运行。
-
在这种情况下,E 的默认“all_success”不符合您的要求吗?
-
不,在这种情况下,当跳过 D 时,E 不会运行。 E 的“none_failed”比“all_done”更正确,因为当 B 或 D 失败时 E 不会运行,但由于跳过的方式,仍然不能解决运行 C 时 E 运行的问题。 t 通过“all_success”或“all_failed”以外的规则级联。
-
我更新了原始帖子以指定“none_failed”而不是“all_done”,因为这更正确但仍然不是原始问题。
标签: airflow directed-acyclic-graphs