CommencezCommencez gratuitement

Implémenter une limite de débit

Vous mettez sur pied une API d'analyse des sentiments où les utilisateurs peuvent analyser des textes. Pour prévenir les abus, vous devez appliquer une limitation de débit qui autorise seulement 5 requêtes par minute et par clé d'API. La classe RateLimiter existe déjà et vous devez ajouter la méthode is_rate_limited dans la classe RateLimiter pour vérifier le nombre de requêtes effectuées dans la fenêtre de temps d'une minute.

Les classes datetime et timedelta de la bibliothèque datetime ont été préimportées.

Cette activité fait partie du cours

Déployer l'IA en production avec FastAPI

Voir le cours

Instructions de l’exercice

  • Obtenez l'heure actuelle et calculez l'horodatage d'il y a une minute.
  • Filtrez la liste des requêtes pour conserver seulement les horodatages de la dernière minute.
  • Vérifiez si le nombre de requêtes récentes dépasse la limite.

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

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
Modifier et exécuter le code