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

airflow默认使用utc时间,在中国时区需要用+8小时就是本地时间,
下面把airflow全面修改为中国时区,带大家改airflow源码
博主使用airflow版本是1.10.0,其它版本大同小异,参照修改即可

1. 先讲使用 pip安装apache-airflow 的修改方式

  1. 在airflow家目录下修改airflow.cfg,设置
 default_timezone = Asia/Shanghai
  1. 进入airflow包的安装位置,也就是site-packages的位置,以下修改文件均为相对位置
# 这我安装airflow包的位置(大家自行参考)
cd /root/.virtualenvs/af/lib/python3.4/site-packages/ 
  1. 修改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()
    
  2. 修改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
  1. 修改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",
  1. 注释airflow/utils/sqlalchemy.py中的cursor.execute(“SET time_zone = ‘+00:00’”) (第124行)

最后重启airflow-webserver即可

---------------------------------------------------分割线---------------------------------------------------

2. 源码安装apache-airflow方式

  1. 官方github下载 airflow的zip包或者克隆到本地

  2. cd incubator-airflow

  3. 修改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()
    
  4. 修改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
  1. 修改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",
  1. 注释airflow/utils/sqlalchemy.py中的cursor.execute(“SET time_zone = ‘+00:00’”) (第124行)
  2. 使用python setup.py install 安装
  3. 初始化airflow
airflow initdb
  1. 修改airflow家目录下的airflow.cfg,设置
 default_timezone = Asia/Shanghai

这样就全部改完了,本篇博客主要讲的是把airflow的时区改为中国地区,
airflow的安装请移步centos7 大数据任务调度系统airflow的安装(单机或分布式)
不过建议大家还是使用pip 安装apache-airflow,然后再修改源码的方式
这里有我改好的apache-airflow==1.10.0版本源码
大家考下来直接使用 python setup.py install 安装就可以了


结束,踩坑不易,求赞!

  • 16
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 22
    评论
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值