气流trigger_rule = none_failed不起作用

时间:2019-10-25 03:57:00

标签: google-cloud-platform airflow

我有一个演示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

1 个答案:

答案 0 :(得分:0)

我尝试将另一个虚拟节点添加为none_failed任务的上游,然后按预期运行。

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

似乎 none_failed trigger_rule仅在任务有多个上游任务时起作用?