ec2로 구성된 k8s에서 데이터 파이프라인을 만들었다.
1시간마다 주기적으로 실행하면, 현재 시간 -1시간 0분 ~ 현재 시간 0분(그러니까 1시간 이전의 데이터)의 데이터를 가져와서 작업을 한다. 로컬에서 잘 동작하는걸 보고 서버에 올렸는데 잘 되지 않았다.
원인파악을 해보니 ec2의 timezone이 UTC로 되어있어서 한국시간기준으로 -9시간으로 돌아가고 있어서 그런거였다.
귀찮아서 그냥 현재시간 + 9시간 으로 계산하려다가.... 이렇게 해결하는건 뭔가 아닌것같아서 모듈을 찾았다.
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로 변경되어서 동작한다.
'Python > 2.7 information' 카테고리의 다른 글
json.loads 에러시 위치 찾는 방법 꿀팁 (2) | 2019.12.02 |
---|---|
dictionary 예쁘게 출력하기 + 한글 그대로 출력 (0) | 2019.10.23 |
python re search with newline (0) | 2019.09.23 |
파일 옮기는 꿀팁. (SimpleHTTPServer) (0) | 2019.08.01 |
general function for multiprocessing (0) | 2018.10.17 |