Airflow的安装、修改为本地时间及隐藏官方示例
airflow web UI默认使用utc时间,在中国时区需要用+8小时就是本地时间,下面通过修改airflow源码修改为中国时区,使用airflow版本是1.10.2。
1.airflow的安装
# 设置airflow的家目录,~/airflow为默认的
AIRFLOW_HOME=~/airflow
# install from pypi using pip
# 直接安装会报错,需要导入如下设置
export SLUGIFY_USES_TEXT_UNIDECODE=yes
pip install apache-airflow
2.修改源码改为本地时间
-
在airflow家目录下修改airflow.cfg,设置
default_timezone = Asia/Shanghai
-
进入airflow包的安装位置,也就是site-packages的位置
cd /usr/lib/python2.7/site-packages/
-
修改airflow/utils/timezone.py
-
在 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
-
修改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即可
3.隐藏官方示例
-
修改 airflow.cfg配置项(97行), 在airflow_home(airflow_home = /root/airflow)下
load_examples = False
-
删除airflow.db ,在airflow_home(airflow_home = /root/airflow)下,重新初始化
airflow initdb
Shylin