我有一个演示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
答案 0 :(得分:0)
我尝试将另一个虚拟节点添加为none_failed任务的上游,然后按预期运行。
dummy_fix = DummyOperator(task_id='dummy_fix', dag=dag)
dummy_fix >> none_failed
似乎 none_failed trigger_rule仅在任务有多个上游任务时起作用?