Ошибка Google API: превышен лимит запросов. рельсы 4

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

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

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


person Santosh Kumbhar    schedule 27.09.2018    source источник


Ответы (2)


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

sleep 2

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

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

person Akash Kinwad    schedule 27.09.2018

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

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

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

Geocoder.configure(
  timeout: 10
)

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

person Kedarnag Mukanahallipatna    schedule 27.09.2018
comment
мы можем увеличить размер API геокодера. Ошибка Google API: превышен лимит запросов - person Santosh Kumbhar; 27.09.2018
comment
я попробую это, но эта проблема ошибка Google API: превышение лимита запросов все еще идет - person Santosh Kumbhar; 27.09.2018
comment
О каком размере вы говорите? - person Kedarnag Mukanahallipatna; 27.09.2018
comment
Что вам нужно сделать, так это отложить, когда вы получите сообщение об ошибке OVER_QUERY_LIMIT, а затем повторить попытку. - person Kedarnag Mukanahallipatna; 27.09.2018
comment
Давайте продолжим обсуждение в чате. - person Kedarnag Mukanahallipatna; 27.09.2018