Mettre en place une limitation de débit
Vous développez une API d’analyse de sentiments où les utilisateurs peuvent analyser des textes. Pour éviter les abus, vous devez implémenter une limitation de débit qui n’autorise que 5 requêtes par minute et par clé API. La classe RateLimiter est déjà créée et vous devez ajouter la méthode is_rate_limited au sein de 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.
Cet exercice fait partie du cours
Déployer l’IA en production avec FastAPI
Instructions
- Récupérez l’heure actuelle et calculez l’horodatage d’il y a une minute.
- Filtrez la liste des requêtes pour ne conserver que 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 cet exemple de code.
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