ComenzarEmpieza gratis

Respetar los límites de la tasa API

Pongamos a prueba lo que hemos aprendido sobre la gestión de errores. En este ejercicio te encontrarás con un error de límite de velocidad, lo que significa que estás enviando demasiadas peticiones al servidor en poco tiempo. Arreglémoslo aplicando una solución para eludir el límite de velocidad y que nuestro script no falle.

Tu biblioteca musical contiene más de 3500 pistas de música, así que vamos a intentar encontrar la pista más larga comprobando la propiedad Length de cada pista.

Pero hay un problema, la API /tracks tiene un tamaño máximo de página de 500 elementos y tiene un límite de velocidad de 1 petición por segundo. El script que hemos escrito está enviando demasiadas peticiones al servidor en poco tiempo. ¡Arreglémoslo!

Los paquetes requests y time ya están importados, y hemos creado las siguientes variables para ti:

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

Este ejercicio forma parte del curso

Introducción a las API en Python

Ver curso

Instrucciones de ejercicio

  • Empieza ejecutando el ejercicio sin hacer cambios en el código, verás que la consola muestra un 429 Client Error indicando que estamos enviando demasiadas peticiones al servidor en poco tiempo.
  • Arregla el script añadiendo una pausa de 3 segundos al final del bucle while utilizando el método sleep del paquete time.

Ejercicio interactivo práctico

Pruebe este ejercicio completando este código de muestra.

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 y ejecutar código