LoslegenKostenlos loslegen

Einhaltung der API-Grenzwerte

Lass uns das, was wir über Fehlerbehandlung gelernt haben, auf die Probe stellen. In dieser Übung wirst du auf einen Fehler bei der Ratenbegrenzung stoßen, was bedeutet, dass du in kurzer Zeit zu viele Anfragen an den Server schickst. Beheben wir das Problem, indem wir einen Workaround implementieren, um die Ratenbegrenzung zu umgehen, damit unser Skript nicht fehlschlägt.

Deine Musikbibliothek enthält über 3500 Lernpfade, also lass uns versuchen, den längsten Lernpfad zu finden, indem wir die Length Eigenschaft jedes Lernpfads überprüfen.

Aber es gibt ein Problem: Die /tracks API hat eine maximale Seitengröße von 500 Einträgen und ein Ratenlimit von 1 Anfrage pro Sekunde. Das Skript, das wir geschrieben haben, sendet in kurzer Zeit zu viele Anfragen an den Server. Bringen wir es in Ordnung!

Die Pakete requests und time sind bereits importiert, und wir haben die folgenden Variablen für dich erstellt:

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

Diese Übung ist Teil des Kurses

Einführung in APIs in Python

Kurs anzeigen

Anleitung zur Übung

  • Beginne damit, die Übung ohne Änderungen am Code auszuführen. Du wirst feststellen, dass die Konsole eine 429 Client Error ausgibt, die anzeigt, dass wir in kurzer Zeit zu viele Anfragen an den Server senden.
  • Repariere das Skript, indem du eine 3-Sekunden-Pause am Ende der while-Schleife mit der Methode sleep aus dem Paket time einfügst.

Interaktive Übung

Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.

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)
Code bearbeiten und ausführen