Flask Error Handler 활용 배경
- Python 마이크로서비스 배포로 Flask 웹프레임워크 주로 사용
- Flask에서 제공하는 Error Handler 활용
- 클라이언트에 보내는 에러 메세지를 커스터마이징하여 출력 세팅
- 에러 발생 가능한 모든 4xx, 50x 에러 처리 필요
- flask에서 제공하는 _aborter 라이브러리 활용
코드 구현
- error_handler.py
from flask import Flask, jsonify
from werkzeug.exceptions import HTTPException, _aborter, default_exceptions
def error_app(app):
"""
Error Handler 정의
"""
def _error_handling(error):
# HTTP Exception인 경우
if isinstance(error, HTTPException):
result = {
"error_code" : error.code,
"description" : error.description,
"message" : str(error)
}
# 그 외 나머지 Exception인 경우
else:
# 500 에러로 mapping 돼 있는 error message를 추출
description_500 = _aborter.mapping[500].description
result = {
"error_code" : 500,
"description" : description_500,
"message" : str(error)
}
# result dict 데이터를 json으로 변경
res = jsonify(result)
# response의 status_code를 result의 error_code 값으로 업데이트
res.status_code = result['error_code']
return res
#####################################################################
# error handler 등록
for code in default_exceptions.keys():
app.register_error_handler(code, _error_handling)
return app
Flask app 소스코드
- app.py
# 위에서 작성한 코드 패키지 형식으로 활용
from error_handler import _error_handling
# Flask app을 _error_handling으로 감싸주기
app = _error_handling(Flask(__name__))
'AI > Python' 카테고리의 다른 글
[자료구조 / 데크] 기본개념 및 구현 (0) | 2023.01.10 |
---|---|
[자료구조/큐] 원형 큐(Queue) 디자인 (0) | 2023.01.05 |
[자료구조/스택,큐] 스택을 이용한 큐 구현 (0) | 2023.01.04 |
[자료구조/스택] 큐를 이용한 스택 구현 (0) | 2023.01.03 |
[자료구조/스택] 일일 온도 (0) | 2022.12.29 |