[python] FastAPI에서 API 사용 통계 추적하기

FastAPI는 높은 성능과 간편한 사용법으로 빠른 API 개발이 가능하게 해줍니다. 그러나 API 사용 통계를 추적하여 모니터링하는 것은 중요한 요소입니다. 이 글에서는 FastAPI에서 API 사용 통계를 추적하는 방법을 알아보겠습니다.

요청 및 응답 기록

FastAPI에서 API 사용 통계를 추적하는 방법 중 하나는 미들웨어를 사용하여 요청과 응답을 기록하는 것입니다. FastAPI 미들웨어를 통해 모든 요청에 대한 정보를 캡처하고 이를 데이터베이스나 로깅 시스템에 저장할 수 있습니다.

from fastapi import FastAPI, Request
import time

app = FastAPI()

async def log_request(request: Request, duration: float):
    # 요청 정보를 로깅하거나 데이터베이스에 저장하는 코드
    print(f"Request: {request.method} {request.url}, Duration: {duration} seconds")

@app.middleware("http")
async def log_request_middleware(request: Request, call_next):
    start_time = time.time()
    response = await call_next(request)
    end_time = time.time()
    duration = end_time - start_time
    await log_request(request, duration)
    return response

위 예제에서 log_request_middleware 함수는 모든 요청에 대한 미들웨어로 작동하여 요청 및 응답을 기록합니다. log_request 함수는 실제로 기록이 수행되는 함수로, 이를 통해 원하는 대로 요청 정보를 저장하거나 출력할 수 있습니다.

통계 정보 수집

요청 및 응답을 기록했다면, 이를 수집하여 통계 정보를 생성할 수 있습니다. 주어진 기간 동안의 API 사용량, 성공 및 실패 비율, 평균 응답 시간 등의 통계를 계산하여 모니터링할 수 있습니다.

# 통계 정보를 수집하고 계산하는 예제 코드
# 데이터베이스나 로깅 시스템에서 요청 정보를 가져와 통계를 계산
def generate_statistics(start_time, end_time):
    # 주어진 기간 동안의 통계 정보를 계산하는 코드
    # 예: API 사용량, 성공 및 실패 비율, 평균 응답 시간 등
    pass

통계 정보를 수집하고 계산한 후, 이를 모니터링 대시보드에 표시하거나 경고를 생성하는 등의 작업을 수행할 수 있습니다.

결론

FastAPI를 사용하여 높은 성능의 API를 개발할 때, API 사용 통계를 추적하고 모니터링하는 것은 매우 중요합니다. 미들웨어를 사용하여 요청과 응답을 기록하고, 통계 정보를 수집하여 모니터링 대시보드를 통해 실시간으로 확인함으로써 API의 안정성과 성능을 향상시킬 수 있습니다.

이러한 방법을 적용하여 FastAPI로 개발한 API의 사용 통계를 효과적으로 추적하고 관리할 수 있습니다.

참고: FastAPI 공식 문서