Следите за использованием ключа, пока не упёрлись в лимит
Наблюдение за заголовками квоты по ходу работы показывает приближение к лимиту задолго до того, как запрос будет отклонён.
Автоматический повтор верен для одних ошибок и является пустой тратой запроса для других. Ошибка здесь либо заваливает запросами и без того перегруженный эндпоинт, либо заставляет отказаться от запроса, который сработал бы секундой позже.
Ответ 503 означает, что сервис временно недоступен, а это именно то временное состояние, для которого и предназначен короткий отложенный повтор. Тайм-аут сети на вашей стороне, когда вы вообще не получили ответа, относится к той же категории, поскольку запрос мог быть обработан, а мог и не быть.
HTTP/1.1 503 Service Unavailable
{
"status": "error",
"error": {"code": "service_unavailable", "message": "Temporarily unavailable, try again shortly"}
}400 означает, что сам запрос составлен неправильно, например отсутствует обязательный параметр или координаты вне допустимого диапазона. 401 означает, что аутентификация не прошла. Повтор любого из них без исправления исходной проблемы лишь снова приведёт к той же ошибке, а каждая попытка в большинстве случаев всё равно учитывается как запрос, так что цикл повторов неверного запроса может впустую израсходовать вашу квоту.
Фиксированная короткая задержка подходит для одиночного интерактивного запроса, но пакетная задача, повторяющая много неудачных элементов, должна увеличивать паузу постепенно, удваивая ожидание между попытками до разумного предела, чтобы кратковременный сбой не превратился в лавину повторов в момент восстановления сервиса.
429 это не столько сбой, который нужно повторить, сколько сигнал сделать паузу. Прочитайте заголовок X-Quota-Reset и подождите до указанного времени, а не повторяйте запрос с короткой фиксированной задержкой, поскольку повтор до сброса будет снова и снова возвращать тот же 429.
Каждая попытка повтора, дошедшая до сервера, успешная или нет, является запросом. Стратегия повторов, учитывающая разницу между временными и постоянными ошибками, позволяет тратить дневную квоту и предоплаченный баланс на реальную работу, а не на повторяющиеся сбои.
Хорошая стратегия повторов в основном сводится к тому, чтобы отличать «попробуйте снова» от «сначала исправьте». На странице ошибок перечислены все коды ошибок, которые возвращает API, и причины каждой из них.