ÎncepețiÎncepe gratuit

Respectarea limitelor de rată ale API-ului

Hai să punem în practică ce am învățat despre gestionarea erorilor. În acest exercițiu vei întâlni o eroare de limită de rată, ceea ce înseamnă că trimiți prea multe cereri către server într-un interval scurt de timp. Vom rezolva problema implementând o soluție care să ocolească această limită, astfel încât scriptul să nu eșueze.

Biblioteca ta muzicală conține peste 3.500 de piese, așa că vom încerca să o găsim pe cea mai lungă verificând proprietatea Length a fiecărei piese.

Există însă o problemă: API-ul /tracks are o dimensiune maximă de pagină de 500 de elemente și o limită de rată de 1 cerere pe secundă. Scriptul pe care l-am scris trimite prea multe cereri către server într-un interval prea scurt. Hai să remediem asta!

Pachetele requests și time sunt deja importate, iar noi am creat pentru tine următoarele variabile:

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

Acest exercițiu face parte din cursul

Introducere în API-uri cu Python

Vezi cursul

Instrucțiuni pentru exercițiu

  • Începe prin a rula exercițiul fără să modifici codul – vei observa că în consolă apare eroarea 429 Client Error, care indică faptul că trimitem prea multe cereri către server într-un interval scurt de timp.
  • Corectează scriptul adăugând o pauză de 3 secunde la sfârșitul buclei while, folosind metoda sleep din pachetul time.

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

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)
Editează și rulează codul