Airflow v2.4.2:新上线月度DAG未按计划执行问题
问题分析与解决方案
你的DAG未按预定时间执行,且UI仍显示原调度时间,可从以下方向排查解决:
1. 调度器未加载最新DAG
推送代码到生产后,Airflow调度器可能未自动解析新的DAG文件。解决方式:
- 重启Airflow调度器服务
- 在Airflow UI中点击DAG列表的「Refresh」按钮手动触发解析
- 执行命令
airflow dags list触发DAG同步
2. 时区配置缺失
代码中未明确指定时区,可能导致调度时间计算偏差。建议显式配置UTC时区(与你的调度表达式匹配):
from datetime import datetime from airflow.utils.timezone import utc START_DATE = datetime(2023, 1, 12, tzinfo=utc) dag = DAG( DAG_NAME, default_args=default_args, schedule_interval=SCHEDULE_INTERVAL, doc_md=doc_md, max_active_runs=1, catchup=False, timezone="UTC" # 明确指定时区 )
3. 调度时间逻辑误解
Airflow的调度基于周期结束时间触发任务:你的0 14 3 * *表示每月3号14UTC是一个周期的结束点,任务会在此时触发。由于你的START_DATE是2023-01-12,第一个调度触发点是2023-02-03 14UTC,之后每月3号14UTC执行一次。如果当前时间已过当月3号14UTC,且catchup=False,Airflow不会补执行错过的任务,会直接等待下一个月的3号14UTC,UI会显示这个未来的时间点。
4. DAG状态检查
- 确认UI中DAG的开关处于开启状态(未暂停)
- 检查DAG的调度日志,排查是否有调度器级别的报错
5. 手动触发验证
在UI中手动触发DAG执行:
- 如果能正常运行,说明是调度器同步或配置问题
- 如果无法运行,查看任务日志排查具体报错(如依赖缺失、权限问题等)
内容的提问来源于stack exchange,提问作者KristiLuna
相关产品推荐
相关产品推荐

