Monitore o uso da sua chave antes de atingir um limite
Acompanhar seus cabeçalhos de cota ao longo do caminho mostra quando um limite está se aproximando, bem antes de uma requisição ser realmente rejeitada.
Uma nova tentativa automática é a atitude certa para alguns erros e um desperdício de requisição para outros. Errar nisso sobrecarrega um endpoint já com dificuldades ou faz você desistir de uma consulta que teria funcionado um segundo depois.
Uma resposta 503 significa que o serviço está temporariamente indisponível, que é exatamente o tipo de condição transitória para a qual uma nova tentativa curta e com atraso foi feita. Um tempo limite de rede do seu lado, em que você nunca recebeu resposta, entra na mesma categoria, já que a requisição pode ou não ter sido processada.
HTTP/1.1 503 Service Unavailable
{
"status": "error",
"error": {"code": "service_unavailable", "message": "Temporarily unavailable, try again shortly"}
}Um 400 significa que a própria requisição estava malformada, como um parâmetro obrigatório ausente ou coordenadas fora do intervalo. Um 401 significa que a autenticação falhou. Tentar de novo em qualquer um desses casos sem corrigir o problema de fundo só gera o mesmo erro outra vez, e cada tentativa ainda conta como requisição na maioria dos casos, então um loop de novas tentativas contra uma requisição inválida pode consumir a sua cota por nada.
Um atraso curto e fixo serve para uma única consulta interativa, mas uma tarefa em lote que repete muitos itens com falha deve aumentar o intervalo progressivamente, dobrando a espera entre as tentativas até um teto razoável, para que uma breve indisponibilidade não se transforme em uma enxurrada de novas tentativas no momento em que o serviço voltar.
Um 429 não é bem uma falha a ser repetida, e sim um sinal para pausar. Leia o cabeçalho X-Quota-Reset e espere até esse momento, em vez de tentar de novo com um atraso curto e fixo, já que tentar antes da reinicialização só vai gerar o mesmo 429 repetidamente.
Cada nova tentativa que chega ao servidor, bem-sucedida ou não, é uma requisição. Uma estratégia de novas tentativas que respeita a diferença entre erros transitórios e permanentes mantém a sua cota diária e o seu crédito pré-pago gastos em trabalho real, e não em falhas repetidas.
Distinguir "tente de novo" de "corrija isto primeiro" é a maior parte do que uma boa estratégia de novas tentativas exige. A página de erros lista todos os códigos de erro que a API retorna e o que aciona cada um.