IniziaInizia gratis

Rispettare i limiti di frequenza delle API

Mettiamo alla prova quello che abbiamo imparato sulla gestione degli errori. In questo esercizio incontrerai un rate-limit error, ovvero stai inviando troppe richieste al server in un intervallo di tempo troppo breve. Risolviamolo implementando una soluzione per aggirare il limite di frequenza, così il nostro script non andrà in errore.

La tua libreria musicale contiene oltre 3500 brani, quindi proviamo a trovare il brano più lungo controllando la proprietà Length di ciascun brano.

C'è però un problema: l'API /tracks ha una dimensione massima della pagina di 500 elementi e un limite di 1 richiesta al secondo. Lo script che abbiamo scritto invia troppe richieste al server in poco tempo. Correggiamolo!

I pacchetti requests e time sono già importati e abbiamo creato per te le seguenti variabili:

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

Questo esercizio fa parte del corso

Introduzione alle API in Python

Visualizza il corso

Istruzioni dell'esercizio

  • Inizia eseguendo l'esercizio senza modificare il codice: noterai che la console mostra un 429 Client Error, indicando che stiamo inviando troppe richieste al server in un tempo troppo breve.
  • Correggi lo script aggiungendo una pausa di 3 secondi alla fine del ciclo while usando il metodo sleep del pacchetto time.

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

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)
Modifica ed esegui il codice