Airflow 气流。仅当第一个任务';他的结果是正确的
我在气流DAG中有两个任务,如下所示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时调用?您只需执行
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
)
正是我想要的。我添加了其他任务“分支”和“不做任何事情”<代码>分支确定在
什么都不做时运行哪个任务
实际上什么都不做。每件事都很有魅力!