BaşlayınÜcretsiz Başlayın

API hız sınırlarına saygı gösterme

Hadi hata yönetimiyle ilgili öğrendiklerimizi test edelim. Bu egzersizde bir oran-sınırı hatası (rate-limit error) ile karşılaşacaksın; bu, kısa sürede sunucuya çok fazla istek gönderdiğin anlamına gelir. Betiğimizin başarısız olmaması için hız sınırını aşmayacak bir geçici çözüm uygulayarak bunu düzeltelim.

Müzik kitaplığında 3500'den fazla parça var; her parçanın Length özelliğine bakarak en uzun parçayı bulmaya çalışalım.

Ama bir sorun var: /tracks API'sinin maksimum sayfa boyutu 500 ve saniyede en fazla 1 istek kabul ediyor. Yazdığımız betik, kısa sürede sunucuya çok fazla istek gönderiyor. Hadi bunu düzeltelim!

requests ve time paketleri zaten içe aktarılmış durumda ve senin için aşağıdaki değişkenleri oluşturduk:

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

Bu egzersiz

Python ile API'lere Giriş

kursunun bir parçasıdır
Kursu Görüntüle

Egzersiz talimatları

  • Koda herhangi bir değişiklik yapmadan egzersizi çalıştırarak başla; konsolda kısa sürede çok fazla istek gönderdiğimizi belirten 429 Client Error çıktısını göreceksin.
  • Betiği, time paketindeki sleep yöntemini kullanarak while döngüsünün sonunda 3 saniyelik bir duraklama ekleyerek düzelt.

Uygulamalı interaktif egzersiz

Bu örnek kodu tamamlayarak bu egzersizi bitirin.

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)
Kodu Düzenle ve Çalıştır