Saltar al contenido
Guías

Límites de uso

Maneja límites de tasa y concurrencia sin duplicar operaciones.

Ecomiq no aplica una cuota única a todas las operaciones. El límite depende de la API y de la política asociada al endpoint.

Qué puede producir 429

Tipo de límiteQué controla
GlobalEl volumen general de peticiones de un cliente o dirección.
Por endpointFlujos sensibles como autenticación, escrituras, analítica o callbacks.
ConcurrenciaCuántas operaciones costosas pueden ejecutarse al mismo tiempo.

Una respuesta 429 Too Many Requests puede venir de cualquiera de estas capas. No deduzcas una cifra universal desde un solo endpoint o entorno.

Cuando la respuesta incluya Retry-After, úsalo como espera mínima. Si no existe, aplica espera exponencial con variación aleatoria.

tu integraciónEcomiqel APILlamada429 Too Many Requestsesperas 1 sReintento429 otra vezesperas 2 sReintento200Si la respuesta trae Retry-After, esa espera manda sobre la tuya

Reintento seguro

async function retryAfter429(
  request: () => Promise<Response>,
  canReplay: boolean,
) {
  for (let attempt = 0; attempt < 4; attempt += 1) {
    const response = await request();
    if (response.status !== 429 || !canReplay) return response;

    const retryAfter = response.headers.get("retry-after");
    const fallback = Math.min(30_000, 500 * 2 ** attempt);
    let delay = fallback + Math.random() * 250;

    if (retryAfter !== null) {
      const seconds = Number(retryAfter);
      if (Number.isFinite(seconds)) {
        delay = seconds * 1000;
      }
    }

    await new Promise((resolve) => setTimeout(resolve, delay));
  }

  throw new Error("Rate limit persisted after 4 attempts");
}

canReplay debe venir del contrato de la operación. Actívalo solo para una lectura, una operación idempotente o una escritura protegida por una clave de idempotencia.

Limita también el número total de intentos. Si varios workers comparten credenciales, coordina la espera para que no vuelvan a enviar la misma ráfaga.

Importaciones

Una importación aceptada se procesa de forma asíncrona. Conserva su identificador y consulta el endpoint de estado; no vuelvas a enviar el archivo para comprobar el avance.

El envío o la validación de una importación sí puede devolver 429, incluido un límite de concurrencia. Espera y vuelve a intentarlo solo si confirmaste que la operación no fue aceptada.

Reduce la presión

  • Usa el mayor tamaño de página que permita ese endpoint.
  • Limita la concurrencia de tu cliente; una cola local suele ser suficiente.
  • Cachea datos que cambian poco, como categorías o zonas.
  • Usa webhooks cuando exista el evento que necesitas.
  • Evita sondeos con intervalos fijos; aumenta el intervalo cuando no hay cambios.

Los valores por defecto y los encabezados publicados pueden variar entre APIs. Diseña el cliente alrededor de la respuesta real, no de una cuota supuestamente común.

En esta página