Airflow服务器自2021年1月起execution date缺失年份致月度日度任务无法调度咨询
Airflow 调度异常排查与解决
问题表现

- 所有配置为月度调度周期的日度粒度任务,均未按规则正常触发完成调度
- 界面展示的执行日期(Execution Date)从2021年1月开始缺失年份字段,仅保留月、日维度信息
- 初步定位判断:执行日期的年份信息缺失,会干扰调度器的时间窗口匹配逻辑,是任务无法正常调度的核心诱因
排查路径
- 先区分异常发生的层级
直接查询元数据库中dag_run表的execution_date字段存储值,确认异常是出现在Web UI展示层(只是渲染时丢失了年份信息),还是调度器计算、数据库存储层(实际存储的字段本身就不包含年份维度) - 核查版本对应已知缺陷
匹配当前部署的Airflow版本,排查对应版本的已知问题:部分2.0-2.2区间的早期版本,存在日期格式化模板默认遗漏%Y年份占位符的问题,会直接导致UI端展示的执行日期缺失年份信息 - 校验全链路时间配置一致性
核对全局配置、单DAG级别的时区参数是否统一:如果全局时区与DAG内自定义的时区配置存在偏移,会导致时间解析时截断高位的年份信息,进一步引发调度器计算执行窗口时,无法匹配对应时间周期
检查DAG定义中start_date的配置格式,确认是否存在传入字符串而非标准datetime对象的问题,避免时间解析时出现字段截断 - 定位调度器运行日志报错
拉取Scheduler组件的同期运行日志,过滤日期解析类的报错信息:当调度器识别到执行日期无法匹配完整时间格式时,会直接跳过对应时间周期的任务触发逻辑,最终表现为月度周期下的日度任务全部无运行记录
对应解决方案
- 若为UI展示层异常:手动修改Airflow Web UI的全局日期格式化模板,在格式化串中补充
%Y年份参数,或直接升级到已修复该缺陷的稳定版本,即可恢复正常的执行日期展示 - 若为调度计算层异常:
统一全局与DAG级别的时区配置,确保所有时间计算逻辑基于带完整年份的datetime对象运行
手动补全因字段解析错误未生成的历史DagRun记录,恢复对应任务的正常调度链路 - 若为元数据库存储异常:执行与当前Airflow版本匹配的数据库迁移命令
airflow db migrate,修复因历史版本升级时迁移脚本执行不完整,导致的字段格式截断问题
内容的提问来源于stack exchange,提问作者Akshata
相关产品推荐
相关产品推荐

