Tres intervalos de espera para tres APIs
Construí pipelines ETL para tres sitios de directorios en abril. Cada sitio utiliza una API diferente: Steam, GitHub y HuggingFace.
Tuve que establecer intervalos de espera para cada una. Los números, los modos de fallo y el manejo de errores son todos distintos. Esto es lo que utilizo y por qué.
Steam: 250 ms de espera
La documentación de Steam es vaga sobre los límites de tasa (rate limits). Los datos de la comunidad sugieren aproximadamente 200 solicitudes cada 5 minutos por IP. Esto significa que un intervalo de 1,5 segundos es seguro.
En su lugar, utilizo 250 ms. Mi tarea nocturna solo procesa 60 entradas de juegos. Con 250 ms, el tiempo total de espera es de 15 segundos. Con 1,5 segundos, pasa a ser de 90 segundos. Ahorrar tiempo es importante cuando procesas múltiples sitios.
Si Steam devuelve un error, la tarea no se detiene. Registra el error y pasa al siguiente elemento. Los datos se actualizan a la noche siguiente.
GitHub: 100 ms de espera
GitHub es muy claro. Los usuarios no autenticados obtienen 60 solicitudes por hora. Los usuarios con un token obtienen 5.000 solicitudes por hora.
Utilizo una espera de 100 ms como medida de cortesía. El token se encarga del trabajo pesado respecto al límite de tasa. Mi pipeline utiliza la API REST principal, no la API de búsqueda. Esto permite límites mucho más altos.
HuggingFace: Sin espera
No he alcanzado un límite de tasa en semanas de ejecuciones nocturnas. La API del registro está diseñada para herramientas por lotes (batch) como la mía.
Obtengo hasta 100 modelos a la vez. Utilizo un token de autenticación para elevar los límites aún más. Para 100 modelos, no usar espera es la solución más sencilla.
Tabla de resumen:
• Steam: 250 ms de espera. Errores no fatales. • GitHub: 100 ms de espera. Errores no fatales. • HuggingFace: Sin espera. Errores no fatales.
El intervalo de espera es una conjetura. La verdadera protección es cómo manejo los errores. Cada llamada a la API utiliza un bloque try/catch. Si una llamada falla, el sistema escribe una fila de respaldo (fallback) en lugar de colapsar.
El intervalo de espera controla con qué frecuencia alcanzas un límite. El manejo de errores controla qué sucede cuando lo haces.
Comunidad de aprendizaje opcional: https://t.me/GyaanSetuAi
