配置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即可


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM