CommencerCommencer gratuitement

Respecter les limites de taux de l'API

Mettons à l'épreuve ce que nous avons appris sur la gestion des erreurs. Dans cet exercice, vous rencontrerez une erreur de limitation de débit, ce qui signifie que vous envoyez trop de requêtes au serveur en peu de temps. Nous allons y remédier en mettant en œuvre une solution de contournement de la limite de débit afin que notre script n'échoue pas.

Votre bibliothèque musicale contient plus de 3500 morceaux de musique. Essayons de trouver le morceau le plus long en vérifiant la propriété Length de chaque morceau.

Mais il y a un problème, l'API /tracks a une taille de page maximale de 500 éléments et une limite de taux de 1 requête par seconde. Le script que nous avons écrit envoie trop de requêtes au serveur en peu de temps. Réparons-le !

Les paquets requests et time sont déjà importés et nous avons créé les variables suivantes pour vous :

longestTrackLength = 0
longestTrackTitle = ""
headers = {'Authorization': 'Bearer 8apDFHaNJMxy8Kt818aa6b4a0ed0514b5d3'}
page_number = 1

Cet exercice fait partie du cours

Introduction aux API en Python

Afficher le cours

Instructions

  • Commencez par exécuter l'exercice sans modifier le code. Vous remarquerez que la console affiche un message 429 Client Error indiquant que nous envoyons trop de requêtes au serveur en peu de temps.
  • Corrigez le script en ajoutant une pause de 3 secondes à la fin de la boucle while à l'aide de la méthode sleep du paquet time.

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

while True:
    params = {'page': page_number, 'per_page': 500}
    response = requests.get('http://localhost:3000/tracks', params=params, headers=headers)
    response.raise_for_status()
    response_data = response.json()
    
    print(f'Fetching tracks page {page_number}')

    if len(response_data['results']) == 0:
        break

    for track in response_data['results']:
        if(track['Length'] > longestTrackLength):
            longestTrackLength = track['Length']
            longestTrackTitle = track['Name']

    page_number = page_number + 1
    
    # Add your fix here
    ____.____(3)

print('The longest track in my music library is: ' + longestTrackTitle)
Modifier et exécuter le code