ПочатиПочніть безкоштовно

Дотримання лімітів запитів API

Перевірмо на практиці, як працює обробка помилок. У цій вправі ви зіткнетеся з помилкою через ліміт запитів — це означає, що ви надсилаєте забагато запитів на сервер за короткий проміжок часу. Виправмо це: реалізуйте обхідний механізм, щоб не перевищувати ліміт і скрипт не падав.

У вашій музичній бібліотеці є понад 3500 треків. Спробуймо знайти найдовший, перевіряючи властивість Length кожного треку.

Втім, є обмеження: API /tracks має максимальний розмір сторінки 500 елементів і ліміт у 1 запит на секунду. Наш скрипт наразі надсилає забагато запитів за короткий час. Виправмо це!

Пакети requests і time вже імпортовано, а також ми створили для вас такі змінні:

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

Ця вправа є частиною курсу

Вступ до API в Python

Переглянути курс

Інструкції до вправи

  • Спочатку запустіть вправу без змін у коді — ви побачите в консолі 429 Client Error, що означає, що ми надсилаємо забагато запитів на сервер за короткий проміжок часу.
  • Виправте скрипт, додавши паузу 3 секунди в кінці циклу while за допомогою методу sleep з пакета time.

Інтерактивна практична вправа

Спробуйте виконати цю вправу, доповнивши цей зразок коду.

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)
Редагувати та запускати код