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

Airflow DAG未按计划时间执行,请求排查原因

问题分析与解决办法

Airflow的调度逻辑基于周期结束触发:任务的execution_date对应其处理的周期结束时间,实际触发时间是该周期结束后的调度点。结合你的配置,可能的问题及解决方法如下:

1. 时区不匹配(最常见)

你的start_date使用了无时区的datetime,Airflow默认采用UTC时区。如果你的业务时区(如东八区)与UTC不同,实际触发时间会和预期的本地时间产生偏差。比如东八区10月25日凌晨2点,对应UTC时间是10月24日18点,Airflow会在UTC的该时间触发,但你可能误以为“25日凌晨2点”未执行。

解决办法:
给start_date指定业务时区,推荐使用Airflow兼容的pendulum库:

import pendulum
start_date=pendulum.datetime(2022, 10, 24, tz="Asia/Shanghai")

同时确保Airflow配置文件中的default_timezone设置为对应时区。

2. DAG开启时间晚于首次调度点

如果你的DAG是在10月25日凌晨2点之后才部署或从暂停状态改为开启,catchup=False会让Airflow跳过这次首次调度——因为catchup=False的作用是不补跑DAG开启前的遗漏任务。

解决办法:

  • 临时将catchup=True,等待任务触发后再改回False;
  • 手动触发execution_date为2022-10-24的任务(该时间对应的触发点就是25日凌晨2点)。

3. DAG处于暂停状态

检查Airflow UI中该DAG的开关状态,若为灰色暂停状态,调度器不会执行任何任务。

解决办法:
点击DAG卡片上的开关,切换为绿色开启状态。

4. 调度器或Worker运行异常

如果Airflow调度器未启动、日志存在报错,或是Celery等任务队列组件故障,都会导致任务无法触发。

解决办法:

  • 查看Airflow调度器日志,排查报错信息;
  • 确认调度器、Worker等核心组件正常运行。

优化后的配置示例

结合时区修正的完整DAG配置:

import pendulum
from airflow import DAG

with DAG(
    dag_id='in__xxx__agnt_brk_com',
    schedule_interval='0 2 * * 2-6',
    start_date=pendulum.datetime(2022, 10, 24, tz="Asia/Shanghai"),
    catchup=False,
    default_args={'depends_on_past': False}
) as dag:
    # 你的任务定义代码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 09:55:20