如果上游任务成功或失败,是否有一种方法可以运行任务,但是如果跳过上游任务,则无法运行该任务?
我对使用trigger_rule
参数as mentioned in this other question的all_done
很熟悉,但是当跳过上游时会触发任务。我只希望任务在上游任务成功或失败时触发。
答案 0 :(得分:2)
我不认为成功和失败有触发规则。您可以做的是设置重复的任务,一个任务使用触发规则all_success
,另一个任务使用触发规则all_failed
。这样,仅当重复任务之前的父项失败/成功时才触发重复任务。
我在下面提供了代码,供您轻松测试预期结果。
因此,假设您有三个任务。
task3仅是您的失败
#dags/latest_only_with_trigger.py
import datetime as dt
from airflow.models import DAG
from airflow.operators.dummy_operator import DummyOperator
from airflow.utils.trigger_rule import TriggerRule
dag = DAG(
dag_id='stackoverflowtest',
schedule_interval=dt.timedelta(minutes=5),
start_date=dt.datetime(2019, 2, 20)
)
task1 = DummyOperator(task_id='task1', dag=dag)
task2 = DummyOperator(task_id='task2', dag=dag,
trigger_rule=TriggerRule.all_success)
task3 = DummyOperator(task_id='task3', dag=dag
trigger_rule=TriggerRule.all_failed)
###### ORCHESTRATION ###
task2.set_upstream(task1)
task3.set_upstream(task1)
希望这会有所帮助!