Mulai sekarangMulai gratis

Mengimplementasikan rate limiter

Anda sedang membangun API analisis sentimen yang memungkinkan pengguna menganalisis teks untuk sentimen. Untuk mencegah penyalahgunaan, Anda perlu menerapkan rate limiting yang hanya mengizinkan 5 permintaan per menit per kunci API. Kelas RateLimiter sudah dibuat, dan Anda harus menambahkan metode is_rate_limited di dalam kelas RateLimiter yang memeriksa jumlah permintaan yang telah dilakukan dalam jendela waktu 1 menit.

Kelas datetime dan timedelta dari pustaka datetime telah diimpor sebelumnya.

Latihan ini merupakan bagian dari kursus

Menerapkan AI ke Produksi dengan FastAPI

Lihat Kursus

Instruksi latihan

  • Dapatkan waktu saat ini dan hitung cap waktu untuk satu menit yang lalu.
  • Saring daftar permintaan agar hanya menyisakan cap waktu dalam satu menit terakhir.
  • Periksa apakah jumlah permintaan terbaru melebihi batas.

Latihan interaktif langsung praktik

Cobalah latihan ini dengan melengkapi kode contoh ini.

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
Edit dan Jalankan Kode