Bắt đầu ngayBắt đầu miễn phí

Triển khai rate limiter

Bạn đang xây dựng một API phân tích cảm xúc cho phép người dùng phân tích văn bản. Để ngăn lạm dụng, bạn cần triển khai rate limiting, chỉ cho phép 5 yêu cầu mỗi phút cho mỗi API key. Lớp RateLimiter đã được tạo sẵn và bạn cần thêm phương thức is_rate_limited trong lớp RateLimiter để kiểm tra số lượng yêu cầu được thực hiện trong khung thời gian 1 phút.

Các lớp datetimetimedelta từ thư viện datetime đã được nhập sẵn.

Bài tập này là một phần của khóa học

Triển khai AI vào môi trường sản xuất với FastAPI

Xem khóa học

Hướng dẫn bài tập

  • Lấy thời gian hiện tại và tính mốc thời gian của một phút trước.
  • Lọc danh sách yêu cầu để chỉ giữ các mốc thời gian trong vòng một phút gần nhất.
  • Kiểm tra xem số lượng yêu cầu gần đây có vượt quá giới hạn hay không.

Bài tập tương tác thực hành trực tiếp

Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.

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
Chỉnh sửa và Chạy Mã