Google API错误:超出查询限制。护栏4

时间:2018-09-27 07:10:53

标签: ruby-on-rails ruby-on-rails-4 google-geocoder rails-geocoder

问题是尝试对Google Map上的宝石位置进行地理编码时,我总是遇到OVER_QUERY_LIMIT错误。我了解您可以致电地理编码器的速率受到限制(以及每日总体积的限制),因此我需要在数组中每个结果之间引入一个暂停。

如何在Rails Controller方法中暂停/延迟以使其变慢?

  

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

2 个答案:

答案 0 :(得分:0)

在方法定义中添加sleep,这应该为您解决问题

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

此外,还有一种替代方法,您可以选择地理编码随附的timeout选项。您需要创建文件 config / initializers / geocoder.rb 并设置以下内容。这个选项,我还没有测试。

Geocoder.configure(
  timeout: 10
)

也请看一下this,可能是您遇到的任何情况,现在唯一可以做的就是等待。

答案 1 :(得分:0)

在内部方法中使用sleep就像这样:

sleep 2

那会睡2秒钟。

要小心点。如果您只是运行睡眠,则该过程将永远睡眠。 (这在您希望线程在唤醒之前一直处于睡眠状态时很有用。)