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
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