You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Airflow的DAG中实现任务顺序执行且失败后不中断

Airflow DAG实现任务顺序执行且忽略前序失败的方案

要实现前序任务失败时后续任务仍能继续执行的顺序任务流,核心是利用Airflow的trigger_rule参数,将后续任务的触发规则设置为all_done(表示只要前序任务完成,无论成功或失败,都触发当前任务)。

完整代码示例

from airflow import DAG
from airflow.operators.bash import BashOperator
from datetime import datetime

default_args = {
    'owner': 'airflow',
    'start_date': datetime(2024, 1, 1),
}

with DAG(
    dag_id='sequential_ignore_failure_dag',
    default_args=default_args,
    schedule_interval='@daily',
    catchup=False
) as dag:
    # 第一个任务,模拟执行失败
    task1 = BashOperator(
        task_id='task1',
        bash_command='echo "Running Task 1"; exit 1'
    )

    # 第二个任务,设置触发规则为all_done
    task2 = BashOperator(
        task_id='task2',
        bash_command='echo "Running Task 2"',
        trigger_rule='all_done'
    )

    # 第三个任务,同样设置触发规则为all_done
    task3 = BashOperator(
        task_id='task3',
        bash_command='echo "Running Task 3"',
        trigger_rule='all_done'
    )

    # 定义顺序依赖关系
    task1 >> task2 >> task3

关键参数说明

  • trigger_rule='all_done':这是实现需求的核心。Airflow默认触发规则为all_success(仅当前序所有任务成功才触发),而all_done会忽略前序任务的执行状态,只要前序任务执行完成(无论成功、失败、跳过),就会触发当前任务。
  • 若你有更复杂的任务分支场景,可根据需求选择其他触发规则(比如none_failed),但针对"无论前序是否失败都执行后续"的场景,all_done是最优选择。

执行效果

当task1执行失败时,task2依然会被触发执行,完成后task3也会正常启动,完全匹配你预期的任务流效果。

内容的提问来源于stack exchange,提问作者Anna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 03:18:15