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

如何创建每日生成但不自动运行的Airflow DAG?

Airflow 辅助重跑 DAG 实现方案

方案适配场景

  • 主DAG任务链路:T1 → T2 → T3 → T4 → T5 → T6 → T7
  • 非报错场景下因数据变更需重跑指定任务及下游链路(示例为T3→T4→T5)
  • 辅助DAG按日生成实例,默认不自动调度,仅支持手动触发指定日期的重跑操作

核心配置要点

  • 辅助DAG的调度周期、起始日期与主DAG保持一致,确保可生成对应日期的运行实例
  • 设置 is_paused_upon_creation=True,保证DAG创建后默认暂停,不会自动触发运行
  • 任务逻辑直接调用Airflow CLI清除主DAG指定任务的状态,触发自动重跑

参考代码

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

# 替换为你的主DAG ID
MAIN_DAG_ID = "your_main_dag_id"
# 替换为你需要重跑的任务列表
RE_RUN_TASKS = ["T3", "T4", "T5"]

default_args = {
    "owner": "airflow",
    "depends_on_past": False,
    "start_date": datetime(2024, 1, 1), # 替换为主DAG的起始日期
}

with DAG(
    dag_id="auxiliary_rerun_t3_t5",
    default_args=default_args,
    schedule_interval="@daily", # 替换为主DAG的调度周期
    catchup=True,
    is_paused_upon_creation=True,
    tags=["auxiliary", "rerun"],
) as dag:

    rerun_task = BashOperator(
        task_id="trigger_main_dag_rerun",
        bash_command=f"""
        airflow tasks clear {MAIN_DAG_ID} \
        --task_regex '{'|'.join(RE_RUN_TASKS)}' \
        --execution_date {{ ds }} \
        --yes \
        --rerun_failed
        """,
    )

参数说明

  • --task_regex:通过正则匹配主DAG中需要重跑的任务,修改RE_RUN_TASKS列表即可调整重跑范围
  • --execution_date {{ ds }}:自动取辅助DAG当前运行实例的执行日期,和主DAG对应日期的任务匹配
  • --yes:跳过确认提示直接执行清除操作
  • --rerun_failed:自动重跑被清除状态的任务,无需额外手动触发

使用方式

需要重跑指定日期的T3-T5链路时,在Airflow的DAG列表中找到auxiliary_rerun_t3_t5,选择对应日期的DAG实例,手动触发运行即可。触发后会自动完成主DAG对应任务的状态清除和重跑流程。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 22:57:03