시작하기무료로 시작하기

속도 제한기 구현하기

감성 분석 API를 구축하고 있습니다. 사용자가 텍스트의 감성을 분석할 수 있는 API인데, 남용을 방지하기 위해 API 키별로 분당 5회 요청만 허용하는 속도 제한(rate limiting)을 구현해야 합니다. RateLimiter 클래스는 이미 생성되어 있으며, 1분 시간 창(time window) 내에 이루어진 요청 횟수를 확인하는 is_rate_limited 메서드를 RateLimiter 클래스 안에 추가해야 합니다.

datetime 라이브러리의 datetimetimedelta 클래스는 미리 임포트되어 있습니다.

이 연습은 강의의 일부입니다

FastAPI로 AI 프로덕션 배포하기

강의 보기

연습 안내

  • 현재 시간을 가져오고, 1분 전 타임스탬프를 계산하세요.
  • 요청 목록을 필터링하여 최근 1분 이내의 타임스탬프만 유지하세요.
  • 최근 요청 횟수가 제한을 초과하는지 확인하세요.

실습형 인터랙티브 연습

이 예제를 이 샘플 코드를 완성하여 풀어보세요.

def is_rate_limited(self, api_key: str) -> bool:
    # Get current time and the timestamp for one minute ago
    now = _____
    minute_ago = now - _____(minutes=1)
    
    # Remove requests older than 1 minute
    self.requests[api_key] = [
        req_time for req_time in self.requests[api_key]
        if req_time > _____]
    
    # Check if no. of requests exceeded the set limit
    if len(self.requests[api_key]) ____ self.requests_per_minute:
        return True
    self.requests[api_key].append(now)
    return False
코드 편집 및 실행