Ошибка Google API: превышен лимит запросов.рельсы 4 - PullRequest
0 голосов
/ 27 сентября 2018

Проблема в том, что я продолжаю сталкиваться с ошибкой OVER_QUERY_LIMIT при попытке геокодировать местоположения драгоценных камней на карте Google.Я понимаю, что существует ограничение на скорость, с которой вы можете вызывать геокодер (а также суточный лимит на общий объем), поэтому мне нужно ввести паузу между каждым результатом в массиве.

Как сделать паузу / задержку в методе Rails Controller, чтобы замедлить его?

geo_localization = "#{latitude},#{longitude}" query = Geocoder.search(geo_localization).first place = query.address

Ответы [ 2 ]

0 голосов
/ 27 сентября 2018

Используйте sleep внутри метода, например:

sleep 2

Это будет спать в течение 2 секунд.

Будьте осторожны, чтобы привести аргумент.Если вы просто запустите сон, процесс будет спать вечно.(Это полезно, когда вы хотите, чтобы поток спал, пока он не проснулся.)

0 голосов
/ 27 сентября 2018

В определении метода добавьте sleep, и это должно помочь вам

def geolocation
  begin
    ...
  rescue Geocoder::OverQueryLimitError
    sleep 2
    retry
  end
end

Кроме того, есть альтернатива, у вас есть опция timeout, которая поставляется с geocode.Вам необходимо создать файл config / initializers / geocoder.rb и установить следующее.Однако этот вариант я не проверял.

Geocoder.configure(
  timeout: 10
)

Взгляните также на этот , это может быть любой из этих случаев для вас, и единственное, что вы можете сделать сейчас, этождать.

...