Cómo funciona
Usamos un cubo que se vacía de a poco (leaky bucket): cada request llena el cubo una unidad, y el cubo se vacía a un ritmo constante. Mientras no se desborde, podés hacer ráfagas.
En la práctica, en una tienda Professional podés hacer una ráfaga de 40 requests y después sostener 2 por segundo.
Headers
Las respuestas a requests autenticados (incluidos los errores de la API) traen:
Cuando te pasás, la respuesta es
429 rate_limited e incluye además Retry-After, con los segundos que tenés que esperar antes de reintentar:
Recomendaciones
- Respetá
Retry-After. Es el tiempo mínimo antes de que haya lugar de nuevo. - Reintentá con backoff exponencial (1 s, 2 s, 4 s…) y algo de variación aleatoria, para que varios workers no reintenten todos a la vez.
- Mirá
X-RateLimit-Remainingy frená antes de llegar a cero, en lugar de esperar al429. - No hagas polling. Para enterarte de cambios, suscribite a webhooks y, para la sincronización de respaldo, pedí sólo lo nuevo con
updated_sinceen lugar de recorrer todo el catálogo. - Paginá con
limitalto (hasta 100) en vez de muchas páginas chicas.