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ırEgzersiz 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,
timepaketindekisleepyö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)