
공공데이터를 활용한 프로젝트를 진행하면서 되던 코드가 랜덤하게(!) 가끔씩 안돌아가는 상황을 종종 마주했다. 기다리거나 새로고침하면 또 되니까 이유를 몰라서 미치는 줄.
key error, index error, 타임 아웃... 오류는 다양했지만 공통점을 발견했다.
컴퓨터나 통신 상태에 따라 api 데이터 로드 시간의 차이로 인해 발생한 문제라고 결론 내리게 되었다.
키가 존재하지 않을 경우를 대비하여 예외 처리를 추가함으로써 문제를 해결할 수 있었다. Python에서는 try-except 구문을 사용하여 예외를 처리할 수 있다.
from flask import Flask, jsonify
app = Flask(__name__)
@app.route('/')
def get_data():
try:
result = {
"sky": "흐림",
"rain": "비",
"temp": "14.1",
"name": "동북아역사재단동북아역사자료실",
"address": "서울특별시 서대문구 통일로 81",
"place_type": "도서관"
}
return jsonify(result)
except KeyError as e:
return jsonify({"error": f"Missing key: {str(e)}"}), 400
if __name__ == '__main__':
app.run(debug=True)
처음에는 웹 크롤링 할 때 썼었던 time.sleep() 함수를 써서 데이터 로드 시간 차이를 해결하기 위해 잠시 대기하게 하려고 했었다. 그런데 여전히 문제가 터졌다. 통신상태는 그때 그때 다른데 그 기다리는 시간을 정확히 설정할 수 없었다.
결국 모든 결과값을 try-except 구문으로 예외처리를 했다. 프론트 단에서 오류가 발생했으니 나중에 다시 시도하라는 메세지 창을 띄우면 좋을 것 같다.
이번 경험을 예외 처리가 얼마나 중요한지 다시 한 번 깨닫게 되었다. 앞으로는 모든 결과 값에 예외처리를 빼먹지 말아야겠다.