Ошибка Google API: превышен лимит запросов. рельсы 4
Проблема в том, что я продолжаю сталкиваться с ошибкой OVER_QUERY_LIMIT при попытке геокодировать расположение драгоценных камней на карте Google. Я понимаю, что существует ограничение на скорость, с которой вы можете вызывать геокодер (а также суточный лимит на общий объем), поэтому мне нужно ввести паузу между каждым результатом в массиве.
Как сделать паузу / задержку в методе Rails Controller, чтобы замедлить его?
geo_localization = "#{latitude},#{longitude}" query = Geocoder.search(geo_localization).first place = query.address
2 ответа
Используйте метод сна внутри так:
sleep 2
Это будет спать в течение 2 секунд.
Будьте осторожны, чтобы привести аргумент. Если вы просто запускаете сон, процесс будет спать вечно. (Это полезно, когда вы хотите, чтобы поток спал, пока он не проснулся.)
В определении метода добавьте сон, и это должно помочь вам
def geolocation
begin
...
rescue Geocoder::OverQueryLimitError
sleep 2
retry
end
end
Кроме того, есть альтернатива, к этому у вас есть возможность timeout
это идет с геокодом. Вам нужно создать файл config/initializers/geocoder.rb и установить следующее. Этот вариант я еще не проверял.
Geocoder.configure(
timeout: 10
)
Взгляните на это тоже, это может быть любой из этих случаев для вас, и единственное, что вы можете сделать сейчас, это подождать.