airflow 修改中国时区(改airflow源码)

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 安装就可以了
 

猜你喜欢

转载自blog.csdn.net/mnasd/article/details/87970558