Airflow 上游任务状态已知且至少有一个成功后触发任务

Airflow 上游任务状态已知且至少有一个成功后触发任务,airflow,Airflow,我有如下要求,但没有一个触发规则能够提供预期的行为 假设任务D有两个上游任务 U1:1秒 U2:100秒(比U1长得多) 我希望任务D仅在以下情况下触发 U1和U2都是成功的 U1成功,跳过U2(未失败) 更确切地说,应该触发D的场景示例包括 C1:U1和U2都成功了 C2:U1被跳过,U2成功 应该跳过D的场景示例包括 C3:U1失败,U2成功 C4:U1和U2都被跳过 C5:U1失败,U2跳过 我曾尝试遵循trigger_rules for D,但没有一个能提供我想要的行

我有如下要求,但没有一个
触发规则
能够提供预期的行为

假设任务D有两个上游任务

  • U1:1秒
  • U2:100秒(比U1长得多)
我希望任务D仅在以下情况下触发

  • U1和U2都是成功的
  • U1成功,跳过U2(未失败)

更确切地说,应该触发D的场景示例包括

  • C1:U1和U2都成功了
  • C2:U1被跳过,U2成功
应该跳过D的场景示例包括

  • C3:U1失败,U2成功
  • C4:U1和U2都被跳过
  • C5:U1失败,U2跳过

我曾尝试遵循
trigger_rule
s for D,但没有一个能提供我想要的行为,因为

  • 所有成功
    :场景C2中不会触发D
  • one_success
    :在场景C2中,U1成功后将立即触发D,无需等待U2
  • 所有_done
    :即使在场景C4中,D也会被触发

  • 您可以使用Xcom来实现此功能。 基本上,您可以通过使用
    xcom\u push
    推送上游任务,并通过下游拉动它来使用
    xcom\u pull()

    此处的文档:

    此处的气流回购示例:

    谢谢你的建议。我理解您的解决方案,但它不是我正在寻找的解决方案类型。该解决方案基本上将“触发器规则”嵌入命令式代码中。然而,有气流的全部目的是使这些“触发规则”或任务之间的依赖关系具有delcarative和可视性,而无需深入代码。
    ExternalTaskSensor
    似乎能够做到这一点,但这听起来不是很整洁。此外,通用Fevour建议不要使用它们