我多次调用on_failure_callback
功能时遇到问题。
当前,我的主要 Dag 分为1个 PythonOperator 和4个 SubDag ,每个 SubDag 包含多个 PythonOperator 。
t_python_1 >> t_subdag_2 >> t_subdag_3 >> t_subdag_4 >> t_subdag_5
__t_subdag_2__:
t_sub2_python_1 >> t_sub2_python_2 t_sub2_python_3
...
在设置过程中,我在主 Dag 的 default_args 中添加了一个on_failure_callback
选项。对于每个 SubDag ,我将其设置为None
。
Args主Dag
:
DEFAULT_ARGS_MAINDAG = {
"owner" : "airflow",
"depends_on_past" : False,
"start_date" : days_ago(2),
"retries" : 2,
"retry_delay" : timedelta(seconds=30),
"on_failure_callback" : custom_failure_handle,
}
Args SubDag
:
DEFAULT_ARGS_SUBDAG = {
"owner" : "airflow",
"depends_on_past" : False,
"start_date" : days_ago(2),
"retries" : 2,
"retry_delay" : timedelta(seconds=30),
"on_failure_callback" : None,
}
但是当我运行 Dag 并检查任务时,似乎每个子subdag的任务都将on_failure_callback
设置为 custom_failure_handle 而不是None
。
因此,在执行过程中,如果 SubDag 任务失败,则on_failure_callback
被调用两次:在主 Dag 和 SubDag 中。 / p>
是否可以为父 Dag 和 SubDag 分别配置,以确保不会两次调用失败回调?
答案 0 :(得分:0)
因此问题不在Airflow
上,而是在我实现的服务中为我的SubDag
创建 default_args 的服务。基本上,SubDag
default_args 总是被主要的Dag
参数覆盖。
您当然可以通过与常规SubDag
相同的方式为每个Dag
传递不同的配置。