百里登风

导航

配置AirFlow系统时钟与宿主进同步

Airflow自带的时区是UTC时区,通常跟当前的环境时区不一样,因此我们需要对时区进行修改。

 

1、修改airflow的配置文件airflow.cfg

default_timezone = Asia/Shanghai

 

2、进入airflow包的安装位置,也就是site-packages的位置,由于我们airflow环境是部署在容器里面的,site-packages的位置通常在这里容器的

/usr/local/lib/python3.7/site-packages/

 

     3、修改airflow/utils/timezone.py

     timezone.py 文件所在目录/usr/local/lib/python3.7/site-packages /airflow/utils

     在 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()函数:

原代码 d = dt.datetime.utcnow()

修改为 d = dt.datetime.now()

 

     4、修改airflow/utils/sqlalchemy.py

     在utc = pendulum.timezone(‘UTC’) 这行代码下添加:

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

 

5、改airflow/www/templates/admin/master.html

该文件所在目录:

/usr/local/lib/python3.7/site-packages/airflow/www/templates/admin

 

把代码 var UTCseconds = (x.getTime() + x.getTimezoneOffset()*60*1000);

改为 var UTCseconds = x.getTime();

 

把代码 "timeFormat":"H:i:s %UTC%",

改为  "timeFormat":"H:i:s",

 

     7、修改Docker容器的时间和宿主时间一致

 

     在容器中修改下/etc/localtime文件的名称,避免冲突

      cd /etc/

       mv localtime localtime_bak

       cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

       查看容器和宿主机的时间,将会看到两个时间一致

 

8、最后重启airflow-webserver即可

posted on 2020-04-09 09:49  百里登峰  阅读(988)  评论(0编辑  收藏  举报