Kom igångKom igång gratis

Respektera API:ets hastighetsgränser

Nu ska vi sätta felhanteringen på prov. I den här övningen stöter du på ett hastighetsgränsfel, vilket innebär att du skickar för många förfrågningar till servern på kort tid. Vi löser det genom att lägga till en fördröjning i skriptet så att det inte misslyckas.

Ditt musikbibliotek innehåller över 3 500 låtar – låt oss hitta den längsta genom att kontrollera egenskapen Length för varje spår.

Det finns dock ett problem: API:et /tracks har en maximal sidstorlek på 500 objekt och en hastighetsgräns på 1 förfrågan per sekund. Skriptet vi skrivit skickar för många förfrågningar på för kort tid. Vi fixar det!

Paketen requests och time är redan importerade, och följande variabler har skapats åt dig:

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

Den här övningen är en del av kursen

Introduktion till API:er i Python

Visa kurs

Övningsinstruktioner

  • Börja med att köra övningen utan att ändra något i koden – du kommer att se att konsolen skriver ut ett 429 Client Error, vilket indikerar att för många förfrågningar skickas till servern på kort tid.
  • Åtgärda skriptet genom att lägga till en paus på 3 sekunder i slutet av while-loopen med hjälp av metoden sleep från paketet time.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

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)
Redigera och kör kod