es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Errores persistentes de Spotify 429 – con una sugerencia absurda de reintentar después de 76.000 segundos (aproximadamente 21 horas).

Estoy trabajando en una aplicación que utiliza la API web de Spotify para construir y mantener listas de reproducción para el usuario basadas en una receta dada (simplemente un JSON que representa un esquema lógico básicamente). Actualmente la aplicación está en modo de desarrollo. Utilizo retrasos entre cada llamada a la API que hago, actualmente alrededor de 400 ms. Y también tuve retrasos de 7.5 segundos cuando obtuve el ocasional error 429 (demasiadas solicitudes).

De todos modos, recientemente hice que todas las recetas de listas de reproducción se reconstruyan en un bucle infinito. Por lo tanto, el proceso siempre está en funcionamiento y realiza llamadas a la API aproximadamente cada 100 ms, con el fin de mantener todas las listas de reproducción actualizadas según las recetas. Sin embargo, después de dejar que este bucle se ejecute durante unos 10 minutos, comencé a recibir persistente errores 429, incluso después de intentar nuevamente después de 7.5 segundos y más tiempo.

Aparentemente, las respuestas 429 contienen una cabecera llamada ‘retry-after’, que indica cuánto tiempo sugiere Spotify esperar antes de realizar otra llamada (como dije, antes utilizaba un retraso fijo de 7.5 segundos en los errores 429). Estoy viendo que el valor que estoy recibiendo para ‘retry-after’ es del orden de aproximadamente 76,000 segundos (21 horas).

Pero pensé que los límites de velocidad se aplican en una ventana de 30 segundos… (ver https://developer.spotify.com/documentation/web-api/guides/rate-limits/) ¿Entonces por qué mi cabecera ‘retry-after’ es tan alta?

Esto es principalmente una pregunta de filosofía de diseño, así que creo que el código en sí mismo es en su mayoría irrelevante, pero si quieres echarle un vistazo está disponible aquí: https://github.com/jakefoglia/Smart-Playlist-Manager

site/SPM-core/maintainer.js: contiene el ‘bucle infinito’

site/SPM-core/spotify-api-hook.js: contiene la mayoría de las llamadas a la API

Tags:  ,

Answer

  1. Avatar for davy.ai

    Pregunta sobre la cabecera de reintento alto en la API web de Spotify

    Como experto en TI especializado en node.js y la API web de Spotify, entiendo que se está desarrollando una aplicación utilizando la API para construir y mantener listas de reproducción para el usuario basadas en una receta en formato JSON. El proceso se ejecuta en un bucle infinito, realizando llamadas a la API aproximadamente cada 100 ms para mantener actualizadas todas las listas de reproducción. Sin embargo, después de ejecutar el bucle durante 10 minutos, la aplicación recibe respuestas de error persistentes 429, y la cabecera “retry-after” sugiere un período de espera de aproximadamente 21 horas.

    Según la documentación de la API web de Spotify, los límites de velocidad se aplican durante una ventana de 30 segundos, como se indica en https://developer.spotify.com/documentation/web-api/guides/rate-limits/. Esto plantea la pregunta, ¿por qué la cabecera “retry-after” es tan alta en este caso?

    Aunque se trata de una pregunta sobre la filosofía de diseño, el código puede ser útil para comprender la implementación de la aplicación. El código está disponible aquí: https://github.com/jakefoglia/Smart-Playlist-Manager

    El bucle infinito se encuentra en el archivo maintainer.js, mientras que la mayoría de las llamadas a la API están contenidas en el archivo spotify_api_hook.js.

Comments are closed.