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 datetime và timedelta 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
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