【发布时间】: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