เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

การสร้าง Rate Limiter

กำลังสร้าง API วิเคราะห์ความรู้สึก (sentiment analysis) ที่ให้ผู้ใช้วิเคราะห์ข้อความได้ เพื่อป้องกันการใช้งานในทางที่ผิด จึงต้องใช้การจำกัดอัตราคำขอ (rate limiting) โดยอนุญาตให้ส่งคำขอได้เพียง 5 ครั้งต่อนาทีต่อ API key คลาส RateLimiter ถูกสร้างไว้แล้ว และต้องเพิ่มเมธอด is_rate_limited ภายในคลาสนี้ เพื่อตรวจสอบจำนวนคำขอที่เกิดขึ้นภายในช่วงเวลา 1 นาที

คลาส datetime และ timedelta จากไลบรารี datetime ถูก import ไว้ให้แล้ว

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

การ Deploy AI สู่ Production ด้วย FastAPI

ดูคอร์ส

คำแนะนำการฝึกหัด

  • รับเวลาปัจจุบันและคำนวณ timestamp ของเวลาเมื่อ 1 นาทีที่แล้ว
  • กรองรายการคำขอเพื่อเก็บเฉพาะ timestamp ที่อยู่ภายใน 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
แก้ไขและรันโค้ด