ComeçarComece gratuitamente

Respeitar os limites de taxa de API

Vamos testar o que aprendemos sobre tratamento de erros. Neste exercício, você encontrará um erro de limite de taxa, o que significa que você está enviando muitas solicitações ao servidor em um curto período de tempo. Vamos corrigir isso implementando uma solução alternativa para contornar o limite de taxa para que nosso script não falhe.

Sua biblioteca de música contém mais de 3.500 faixas de música, portanto, vamos tentar encontrar a faixa mais longa verificando a propriedade Length de cada faixa.

Mas há um problema: a API /tracks tem um tamanho máximo de página de 500 itens e tem um limite de taxa de 1 solicitação por segundo. O script que escrevemos está enviando muitas solicitações ao servidor em um curto período de tempo. Vamos consertar isso!

Os pacotes requests e time já foram importados, e criamos as seguintes variáveis para você:

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

Este exercício faz parte do curso

Introdução às APIs em Python

Ver Curso

Instruções de exercício

  • Comece executando o exercício sem fazer alterações no código. Você perceberá que o console exibe um 429 Client Error indicando que estamos enviando muitas solicitações ao servidor em um curto período de tempo.
  • Corrija o script adicionando uma pausa de 3 segundos no final do loop while usando o método sleep do pacote time.

Exercício interativo prático

Experimente este exercício preenchendo este código de exemplo.

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)
Editar e executar código