Airflow Webserver上次运行时间与实际运行时间不一致问题排查
Airflow DAG汇总页与详情页/日志时间不一致问题分析
可能的原因拆解
1. 概念混淆:execution_date vs 实际运行时间
Airflow中,DAG汇总页的「Last run time」默认展示的是DAG的execution_date(调度执行日期),而详情页和日志里的时间是任务实例实际启动的start_date。这两个时间本身就可能存在差异——比如DAG调度间隔设为@hourly,调度器会在每个整点触发任务,此时execution_date是整点时刻,但任务实际启动(start_date)可能因资源等延迟几分钟甚至更久。但如果你的情况是固定差1小时,那大概率不是这个原因。
2. UI时区渲染Bug(Airflow版本问题)
部分Airflow版本(比如2.2.x到2.4.x之间的部分子版本)存在UI时区渲染不一致的问题:
- 汇总页在渲染时间时,错误地将本地时区时间转换为UTC后展示,而详情页和日志页面则正确使用了配置的本地时区,导致两者差1小时(刚好对应UTC与本地时区的时差)。
- 验证方式:检查Airflow配置中
default_timezone和webserver_default_ui_timezone是否都设置为同一时区(比如Asia/Shanghai),如果配置正确但仍出现问题,基本可以确定是版本Bug,升级到较新的稳定版本(比如2.5+)即可解决。
3. 调度器与Webserver时区不一致
虽然你说时区设置一致,但需要确认调度器进程和Webserver进程的运行环境时区是否统一:
- 比如Webserver所在服务器时区是CST,但调度器所在容器/服务器时区是UTC,导致调度器生成的
execution_date是UTC时间,Webserver汇总页直接展示这个时间,而详情页则转换为本地时区显示,从而出现1小时差。 - 验证方式:分别在调度器和Webserver所在环境执行
date命令,确认时区是否一致;同时检查Airflow配置文件中core/default_timezone是否在两个进程中都正确加载。
结论
如果你的时区配置(包括系统时区和Airflow配置)完全一致,且排除了execution_date和实际运行时间的概念混淆,那大概率是Airflow特定版本的UI渲染Bug,升级到最新稳定版本即可解决;若配置或系统时区存在差异,则需要统一时区设置。
内容的提问来源于stack exchange,提问作者Arnon Phongsiang
相关产品推荐
相关产品推荐

