Controla el uso de tu clave antes de alcanzar un límite
Vigilar las cabeceras de cuota sobre la marcha te indica cuándo te acercas a un límite, mucho antes de que se rechace realmente una solicitud.
Un reintento automático es lo correcto para algunos errores y un desperdicio de solicitudes para otros. Equivocarse aquí o bien satura un endpoint que ya tiene problemas, o bien abandona una consulta que habría funcionado un segundo después.
Una respuesta 503 significa que el servicio no está disponible temporalmente, que es justo el tipo de situación transitoria para la que está pensado un reintento breve y diferido. Un tiempo de espera agotado en la red por tu parte, en el que nunca llegaste a recibir respuesta, entra en la misma categoría, ya que la solicitud puede haberse procesado o no.
HTTP/1.1 503 Service Unavailable
{
"status": "error",
"error": {"code": "service_unavailable", "message": "Temporarily unavailable, try again shortly"}
}Un 400 significa que la propia solicitud estaba mal formada, por ejemplo porque faltaba un parámetro obligatorio o las coordenadas estaban fuera de rango. Un 401 significa que falló la autenticación. Reintentar cualquiera de los dos sin corregir el problema de fondo solo produce el mismo error otra vez, y en la mayoría de los casos cada intento sigue contando como una solicitud, así que un bucle de reintentos contra una solicitud errónea puede agotar tu cuota para nada.
Un retraso breve y fijo está bien para una sola consulta interactiva, pero un proceso por lotes que reintenta muchos elementos fallidos debería espaciar los intentos de forma progresiva, duplicando la espera entre intentos hasta un máximo razonable, para que una breve interrupción no se convierta en una avalancha de reintentos en cuanto se restablezca el servicio.
Un 429 no es tanto un fallo que haya que reintentar como una señal para hacer una pausa. Lee la cabecera X-Quota-Reset y espera hasta ese momento en lugar de reintentar con un retraso breve y fijo, ya que reintentar antes del reinicio solo producirá el mismo 429 una y otra vez.
Cada reintento que llega al servidor, tenga éxito o no, es una solicitud. Una estrategia de reintentos que respeta la diferencia entre errores transitorios y permanentes hace que tu cuota diaria y tu crédito prepago se gasten en trabajo real y no en fallos repetidos.
Distinguir entre "vuelve a intentarlo" y "corrige esto primero" es, en esencia, lo que hace una buena estrategia de reintentos. La página de errores enumera todos los códigos de error que devuelve la API y qué provoca cada uno.