Airflow 气流。仅当第一个任务';他的结果是正确的

Airflow 气流。仅当第一个任务';他的结果是正确的,airflow,Airflow,我在气流DAG中有两个任务,如下所示 def check_条件(**kwargs): #做点什么 返回True#或返回False task1=蟒蛇算子( task\u id='condition\u task', python\u callable=检查\u条件, 提供上下文=True, dag=dag ) task2=Dummy运算符( task_id='following_task', dag=dag ) 我应该怎么做才能使 task 2仅在task 1的返回值为True时调用?您只需执行

我在气流DAG中有两个任务,如下所示

def check_条件(**kwargs):
#做点什么
返回True#或返回False
task1=蟒蛇算子(
task\u id='condition\u task',
python\u callable=检查\u条件,
提供上下文=True,
dag=dag
)
task2=Dummy运算符(
task_id='following_task',
dag=dag
)
我应该怎么做才能使
task 2
仅在
task 1
的返回值为
True
时调用?

您只需执行以下操作:

task1 >> task2
运算符具有设置何时运行的条件的
trigger\u规则
参数。 默认值为
all_success
,因此无需特别提及。 可以找到有关触发器规则的更多信息

这里的问题是,当您执行返回False时,您希望task1的状态是什么。您希望task1失败还是成功? 如果您预计它会失败,则需要将
return False
替换为
raise Exception()
如果希望成功,则需要
task2
task1
中提取返回值(通过Xcom),然后处理该值。 例如:

def following(**kwargs):
    ti = kwargs['ti']
    pulled_value = ti.xcom_pull(task_ids='task1')
    if bool(pulled_value) = True:
        do_something
    else
        do_something_else

task2 = PythonOperator(
    task_id='following_task',
    python_callable=following,
    provide_context=True,
    dag=dag
)

正是我想要的。我添加了其他任务“分支”和“不做任何事情”<代码>分支确定在
什么都不做时运行哪个任务
实际上什么都不做。每件事都很有魅力!