[Python/Flask/AWS] 기상청 단기 예보 API 적용

gyeol·2025년 6월 4일
post-thumbnail

현재 Chat Gpt를 파인튜닝하여 음식점을 추천해주는 기능을 넣고 있는 중에, 사용자 위치에 해당하는 날씨 정보도 함께 이용해서 그에 맞는 음식점을 추천해주면 좋을 것 같아 날씨 API를 사용하였다. 로컬에서는 사용자의 위치에 맞는 날씨 정보와 그에 알맞는 음식점을 추천해주었는데 이 코드를 AWS 서버에 올리니까 위치와 다른 지역의 날씨를 자꾸 말했다.

  • React 앱 내에서 Flask API를 통해 실시간 날씨를 조회하려 함
  • 한국 시간 기준으로 현재 시간은 정상적으로 출력
  • 기온 데이터는 이상한 기준 값으로 출력
날씨 조회를 시작합니다...
추출된 기온 정보 (T1H): 17.0
API 호출 결과: {'nx': '89', 'ny': '74', 'base_date': '20250604', 'base_time': '0437', 'temperature': 17.0, 'recommendation': '약간 쌀쌀합니다. 따뜻한 분위기의 식당을 추천합니다.'}
최종 추천 결과: 약간 쌀쌀합니다. 따뜻한 분위기의 식당을 추천합니다.

원인 분석

알고보니 AWS EC2, Ubuntu의 기본 세팅에서 시스템 시간이 UTC이기에 이를 KST로 바꿔주어야 했던 것이다.

해결

이제 원인을 알게 되었으니 시간을 받을 때, KST 기준으로 받을 수 있도록 수정해준다.

import pytz
kst = pytz.timezone("Asia/Seoul")
now_kst = datetime.datetime.now(kst)
print("현재 시각 (KST):", now_kst.strftime("%Y-%m-%d %H:%M"))

그리고 API를 요청할 때 보내는 base_time도 이에 맞게 수정해준다.

def get_base_datetime(requested_dt=None):
    # 시차 보정 적용
    dt = datetime.datetime.now(pytz.timezone("Asia/Seoul")) - datetime.timedelta(minutes=40)
    dt = dt.replace(minute=0, second=0, microsecond=0)
    return dt.strftime("%Y%m%d"), dt.strftime("%H%M")

이때 기상청에서는 30분 단위로 올리기에 나는 정각 시간으로 보정하였다.

결과

너무나도 당연히... 이제 한국 시간과 날씨를 기반으로 정보가 넘어오는 것을 확인할 수 있었다.

profile
공부 기록 공간 '◡'

0개의 댓글