Mise en œuvre d'un limiteur de débit
Vous développez une API d'analyse des sentiments qui permet aux utilisateurs d'analyser des textes afin d'en déterminer le sentiment. Afin d'éviter tout abus, il est nécessaire de mettre en place une limitation du débit qui n'autorise qu'5
e requête par minute et par clé API. La classe « RateLimiter
» est déjà créée et vous devez ajouter la méthode « is_rate_limited
» dans la classe « RateLimiter
» qui vérifie le nombre de requêtes effectuées dans un intervalle 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
- Obtenir l'heure actuelle et calculer 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.
- Veuillez vérifier 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