【发布时间】:2022-08-19 16:57:24
【问题描述】:
要求是当任务 A 失败时,我需要触发任务 D1。同样,当任务 B 失败时,需要触发任务 D2。
我已将其编码如下。使用此代码,当 Task-A 失败时,Task D1 和 Task D2 都会被触发。如何解决这个问题?
def do_op1_work(**kwargs):
x = kwargs[\'dag_run\'].conf.get(\'x\')
log.info(\'x: \' + str(x))
if x == 0:
raise ValueError(\'Manual Exception\')
def do_op2_work(**kwargs):
y = kwargs[\'dag_run\'].conf.get(\'y\')
log.info(\'y: \' + str(y))
if y == 0:
raise ValueError(\'Manual Exception\')
with DAG(dag_id=\'fulfill_uv\', schedule_interval=None, default_args=default_args, catchup=False) as dag:
op1 = PythonOperator(task_id=\'A\', python_callable=do_op1_work, provide_context=True)
op2 = PythonOperator(task_id=\'B\', python_callable=do_op2_work, provide_context=True)
op3 = DummyOperator(task_id=\'C\')
op4 = DummyOperator(task_id=\'D1\', trigger_rule=\'all_failed\')
op5 = DummyOperator(task_id=\'D2\', trigger_rule=\'all_failed\')
op6 = DummyOperator(task_id=\'E\', trigger_rule=\'one_success\')
op2.set_upstream(op1)
op3.set_upstream(op2)
op4.set_upstream(op1)
op5.set_upstream(op2)
op6.set_upstream(op3)
op6.set_upstream(op4)
op6.set_upstream(op5)
-
如果任务 A 成功,它运行任务 B,但如果它失败,它运行任务 D?
标签: airflow