【问题标题】:Airflow trigger_rule=none_failed not working气流 trigger_rule=none_failed 不起作用
【发布时间】:2020-02-21 10:05:57
【问题描述】:

我有一个演示 DAG,其源代码附在下面。

dag 很简单: dummy_success >> one_failed >> none_failed

dummy_success 是一个虚拟节点,无论如何都会成功。

one_failed 是 trigger_rule=one_failed 的任务,因此它会在 dag 中被跳过。

none_failed 是 trigger_rule=none_failed 的任务。

正如气流documentation 所解释的那样,最终任务将被触发,因为它的所有父项都处于成功状态或已跳过(在这种情况下已跳过)。但是,当我在 GCP 作曲家中运行它时,最后的任务也被跳过了。

我想知道为什么这不符合预期?如果我需要在其父任务成功或跳过时触发我的任务,我还能做什么?

我的镜像版本是composer-1.7.2-airflow-1.10.2

import datetime as dt

from airflow.models import DAG
from airflow.operators.dummy_operator import DummyOperator

dag = DAG(
    dag_id='test_trigger_rule',
    schedule_interval='@once',
    start_date=dt.datetime(2019, 2, 28)
)

dummy_success= DummyOperator(task_id='dummy_success', dag=dag)
one_failed= DummyOperator(task_id='one_failed', dag=dag, trigger_rule="one_failed")

none_failed = DummyOperator(task_id='none_failed', dag=dag,trigger_rule='none_failed')

dummy_success >> one_failed >> none_failed

【问题讨论】:

  • one_failed DummyOperator 是如何被跳过的?
  • 我问的原因是具有跳过逻辑的不同运算符具有不同的行为。我在这里完成了类似的工作:stackoverflow.com/a/58310698/6591849
  • one_failed 被跳过,然后 none_failed 也被跳过。我尝试在 none_failed 的上游添加另一个虚拟节点,然后它工作了

标签: google-cloud-platform airflow


【解决方案1】:

我尝试在 none_failed 任务的上游添加另一个虚拟节点,然后它按预期工作。

dummy_fix = DummyOperator(task_id='dummy_fix', dag=dag)
dummy_fix >> none_failed

似乎 none_failed trigger_rule 仅在任务具有多个上游任务时才有效?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-11
    • 1970-01-01
    • 1970-01-01
    • 2021-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多