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

Airflow 2.4.1中DAG未按小时运行问题求助

问题原因与解决方案

你的核心问题是**schedule_interval参数的位置错误**——你把它放在了default_args字典里,但Airflow中这个参数是属于DAG实例的配置项,而非任务的默认参数。default_args里的参数是传递给DAG内所有任务的,DAG本身不会读取这里的schedule_interval,因此你的DAG实际上使用了错误的调度规则,导致UI显示为每日调度。

修正步骤

  • 将schedule_interval='@hourly'从default_args中移除,直接作为参数传入DAG的构造函数中。
  • Airflow默认catchup=True,只要参数设置正确,会自动补全start_date到当前时间的所有小时级调度实例。

修正后的代码

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

default_args = {
    'retries': 5,
    'retry_delay': timedelta(minutes=4)
}

with DAG(
    dag_id='dag_with_cron_v6',
    description='dag with cron expression',
    start_date=datetime(2022, 10, 7, 2),
    schedule_interval='@hourly',  # 移至DAG参数中
    default_args=default_args
) as dag:
    task1 = BashOperator(
        task_id='task_1',
        bash_command='echo Please walk carefully. Slippery floor.'
    )

    task1

额外说明

  • 修正后重启Airflow调度器并刷新UI,调度周期会显示为每小时,catchup逻辑也会正常触发所有遗漏的小时任务实例。
  • Airflow 2.x版本中,schedule_interval可与新参数schedule互换使用,你也可以写成schedule='@hourly',功能完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 01:25:37