Python/2.7 information

timezone 설정 모듈.

qkqhxla1 2019. 9. 28. 21:31

ec2로 구성된 k8s에서 데이터 파이프라인을 만들었다.


1시간마다 주기적으로 실행하면, 현재 시간 -1시간 0분 ~ 현재 시간 0분(그러니까 1시간 이전의 데이터)의 데이터를 가져와서 작업을 한다. 로컬에서 잘 동작하는걸 보고 서버에 올렸는데 잘 되지 않았다.

원인파악을 해보니 ec2의 timezone이 UTC로 되어있어서 한국시간기준으로 -9시간으로 돌아가고 있어서 그런거였다.


귀찮아서 그냥 현재시간 + 9시간 으로 계산하려다가.... 이렇게 해결하는건 뭔가 아닌것같아서 모듈을 찾았다.


https://technote.kr/202


pytz라는 모듈인데 여기 아주 잘 설명되어있다.

from datetime import datetime, timedelta
from pytz import timezone

t_format = '%Y-%m-%d %H:00:00'
an_hour_ago = datetime.strptime((datetime.now(timezone('Asia/Seoul')) - timedelta(hours=1)).strftime(t_format), t_format)  # 1시간 전 0분.
current_hour = datetime.strptime((datetime.now(timezone('Asia/Seoul'))).strftime(t_format), t_format)  # 현재시간 0분.
query = "select * from table where dt >= '{}' and dt < '{}'".format(an_hour_ago, current_hour)


이렇게하면 기본 시간이 UTC인 ec2에서도 KST로 변경되어서 동작한다.