MulaiMulai sekarang secara gratis

Menghormati batas laju API

Mari kita uji apa yang sudah dipelajari tentang penanganan galat. Pada latihan ini Anda akan menemui galat batas laju (rate limit), yang berarti Anda mengirim terlalu banyak permintaan ke server dalam waktu singkat. Mari perbaiki dengan menerapkan solusi untuk mengakali batas laju sehingga skrip kita tidak gagal.

Pustaka musik Anda berisi lebih dari 3500 trek musik, jadi mari kita coba menemukan trek terpanjang dengan memeriksa properti Length dari setiap trek.

Namun ada masalah: API /tracks memiliki ukuran halaman maksimum 500 item dan batas laju 1 permintaan per detik. Skrip yang kita tulis mengirim terlalu banyak permintaan ke server dalam waktu singkat. Mari kita perbaiki!

Paket requests dan time sudah diimpor, dan kami telah membuat variabel berikut untuk Anda:

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

Latihan ini adalah bagian dari kursus

Pengantar API di Python

Lihat Kursus

Petunjuk latihan

  • Mulailah dengan menjalankan latihan tanpa mengubah kode; Anda akan melihat konsol menampilkan 429 Client Error yang menunjukkan kita mengirim terlalu banyak permintaan ke server dalam waktu singkat.
  • Perbaiki skrip dengan menambahkan jeda 3 detik di akhir while-loop menggunakan metode sleep dari paket time.

Latihan interaktif praktis

Cobalah latihan ini dengan menyelesaikan kode contoh berikut.

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)
Edit dan Jalankan Kode