airflow默认使用utc时间,在中国时区需要用+8小时就是本地时间,
下面把airflow全面修改为中国时区,带大家改airflow源码
博主使用airflow版本是1.10.0,其它版本大同小异,参照修改即可
1. 先讲使用 pip安装apache-airflow 的修改方式
在airflow家目录下修改airflow.cfg,设置
default_timezone = Asia/Shanghai
进入airflow包的安装位置,也就是site-packages的位置,以下修改文件均为相对位置
# 这我安装airflow包的位置(大家自行参考)
cd /root/.virtualenvs/af/lib/python3.4/site-packages/
修改airflow/utils/timezone.py
3.1 在 utc = pendulum.timezone(‘UTC’) 这行(第27行)代码下添加,
from airflow import configuration as conf
try:
tz = conf.get("core", "default_timezone")
if tz == "system":
utc = pendulum.local_timezone()
else:
utc = pendulum.timezone(tz)
except Exception:
pass
3.2 修改utcnow()函数 (在第69行)
原代码 d = dt.datetime.utcnow()
修改为 d = dt.datetime.now()
修改airflow/utils/sqlalchemy.py
在utc = pendulum.timezone(‘UTC’) 这行(第37行)代码下添加
from airflow import configuration as conf
try:
tz = conf.get("core", "default_timezone")
if tz == "system":
utc = pendulum.local_timezone()
else:
utc = pendulum.timezone(tz)
except Exception:
pass
修改airflow/www/templates/admin/master.html(第31行)
把代码 var UTCseconds = (x.getTime() + x.getTimezoneOffset()*60*1000);
改为 var UTCseconds = x.getTime();
把代码 "timeFormat":"H:i:s %UTC%",
改为 "timeFormat":"H:i:s",
最后重启airflow-webserver即可
---------------------------------------------------分割线---------------------------------------------------
2. 源码安装apache-airflow方式
去官方github下载 airflow的zip包或者克隆到本地
cd incubator-airflow
修改airflow/utils/timezone.py (是的,你没看错,回到上面的第三步了,别急,跟着改就行)
3.1 在 utc = pendulum.timezone(‘UTC’) 这行(第27行)代码下添加,
from airflow import configuration as conf
try:
tz = conf.get("core", "default_timezone")
if tz == "system":
utc = pendulum.local_timezone()
else:
utc = pendulum.timezone(tz)
except Exception:
pass
3.2 修改utcnow()函数 (在第69行)
原代码 d = dt.datetime.utcnow()
修改为 d = dt.datetime.now()
修改airflow/utils/sqlalchemy.py
在utc = pendulum.timezone(‘UTC’) 这行(第37行)代码下添加
from airflow import configuration as conf
try:
tz = conf.get("core", "default_timezone")
if tz == "system":
utc = pendulum.local_timezone()
else:
utc = pendulum.timezone(tz)
except Exception:
pass
修改airflow/www/templates/admin/master.html(第31行)
把代码 var UTCseconds = (x.getTime() + x.getTimezoneOffset()*60*1000);
改为 var UTCseconds = x.getTime();
把代码 "timeFormat":"H:i:s %UTC%",
改为 "timeFormat":"H:i:s",
使用python setup.py install 安装
初始化airflow
airflow initdb
修改airflow家目录下的airflow.cfg,设置
default_timezone = Asia/Shanghai
这样就全部改完了,本篇博客主要讲的是把airflow的时区改为中国地区,
airflow的安装请移步centos7 大数据任务调度系统airflow的安装(单机或分布式)
不过建议大家还是使用pip 安装apache-airflow,然后再修改源码的方式
这里有我改好的apache-airflow==1.10.0版本源码
大家考下来直接使用 python setup.py install 安装就可以了