Ошибка 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
)

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

Другие вопросы по тегам