[python] Flask에서 성능 모니터링과 로깅 기능 활용하기

Flask는 경량화되고 유연한 웹 프레임워크로, 많은 기능을 내장하고 있습니다. 이 기능들 중에는 성능 모니터링과 로깅을 위한 내장 도구들도 있습니다. 이번 블로그에서는 Flask에서 제공하는 성능 모니터링 도구와 로깅 기능을 활용하여 어떻게 애플리케이션의 성능을 향상시키고 디버깅을 용이하게 하는지 알아보겠습니다.

1. Flask의 성능 모니터링 도구

Flask는 Werkzeug라는 WSGI(웹 서버 게이트웨이 인터페이스) 및 디버깅 도구를 내장하고 있습니다. Werkzeug는 HTTP 요청과 응답을 디버깅하고, 프로파일링하는 기능을 제공합니다. 이를 통해 Flask 애플리케이션의 성능을 모니터링하고 병목 현상을 파악할 수 있습니다.

이를 활용하기 위해 다음과 같이 Werkzeug의 디버깅 및 프로파일링 미들웨어를 Flask 애플리케이션에 적용할 수 있습니다:

from werkzeug.middleware.profiler import ProfilerMiddleware
from werkzeug.middleware.dispatcher import DispatcherMiddleware

app = Flask(__name__)

# 성능 모니터링을 위한 미들웨어 추가
app = ProfilerMiddleware(app, restrictions=[30])

위의 코드에서, ProfilerMiddleware를 사용하여 프로파일링을 활성화하고, restrictions 매개변수를 사용하여 프로파일링 정보를 얻을 최소 실행 시간을 설정할 수 있습니다.

2. Flask의 로깅 기능

Flask는 표준 Python 로깅 모듈인 logging 모듈을 기반으로 로깅을 처리합니다. 이를 통해 서버로의 요청 및 예외 처리, 애플리케이션의 상태 변화에 대한 로그를 기록할 수 있습니다. 예를 들어, 다음과 같이 Flask 애플리케이션의 로거를 설정할 수 있습니다:

import logging
from logging.handlers import RotatingFileHandler
from flask import Flask

app = Flask(__name__)

# 로깅 레벨 설정
app.logger.setLevel(logging.INFO)

# 파일 핸들러 설정
handler = RotatingFileHandler('app.log', maxBytes=10000, backupCount=1)
handler.setLevel(logging.INFO)

# 로깅 포매터 설정
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)

app.logger.addHandler(handler)

위의 예제에서는 RotatingFileHandler를 사용하여 파일에 로그를 기록하고, 로그 파일의 크기가 10KB를 넘을 경우 이전 로그를 백업합니다.

결론

Flask의 성능 모니터링과 로깅 기능은 애플리케이션의 성능을 개선하고, 문제를 신속하게 식별하는 데 도움이 됩니다. 이러한 도구들을 활용하여 Flask 애플리케이션을 효율적으로 관리하고 운영할 수 있습니다.

내부 링크: Flask 공식 문서