Airflow v1.9.0:Web UI触发DAG执行时间为未来的配置咨询
我之前也帮人处理过Airflow v1.9的这类时区问题,刚好能解决你的困惑!你遇到的问题是因为Web UI默认会用浏览器所在的本地时区来生成执行日期,导致和Airflow服务器的时间不匹配,被判定为未来任务。要让Webserver用自身服务器的本地时间,按下面的步骤来:
1. 修改Airflow配置文件
先找到你的Airflow配置文件airflow.cfg——默认在~/airflow/目录下,如果是服务器部署的话可能在/etc/airflow/路径里。打开后调整两个关键配置:
(1)设置核心全局时区
找到[core]区块里的default_timezone,把它改成Webserver所在服务器的本地时区,比如你的服务器是国内时区就写:
[core] default_timezone = Asia/Shanghai
划重点:一定要用IANA标准的时区名称,比如
Europe/London、America/New_York这种,别用GMT+8这类格式,不然可能不生效。
(2)单独配置Webserver时区
在[webserver]区块里添加或者修改webserver_timezone,同样设为服务器的本地时区:
[webserver] webserver_timezone = Asia/Shanghai
这个配置是专门管Web UI显示和触发DAG时用的时区,确保和服务器本地时间完全对齐。
2. 重启Airflow服务
改完配置后必须重启Webserver和Scheduler,不然新配置不会生效:
# 重启Webserver(后台启动,端口根据你的实际配置调整) airflow webserver -p 8080 -D # 重启Scheduler airflow scheduler -D
3. 验证效果
重启完打开Web UI,看右上角的时区标识(v1.9的UI在右上角会显示当前时区),确认已经变成服务器的本地时区。再触发一次DAG,检查执行日期是不是用了服务器的时间,不会再被判定为未来任务啦。
额外提一句:Airflow v1.9确实是比较老的版本了,后续如果有升级计划,新版本的时区配置会更灵活,但针对你现在的版本,上面的步骤完全能解决问题。
内容的提问来源于stack exchange,提问作者Dotan

