【问题标题】:Google API error: over query limit. rails 4Google API 错误:超过查询限制。导轨 4
【发布时间】:2018-09-27 07:10:53
【问题描述】:

问题是我在尝试对 Google Map 上的 gem 位置进行地理编码时不断遇到 OVER_QUERY_LIMIT 错误。我知道您可以调用地理编码器的速率是有限制的(以及总交易量的每日限制),所以我需要在数组中的每个结果之间引入一个暂停。

如何在 Rails 控制器方法中暂停/延迟以减慢速度?

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

【问题讨论】:

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


    【解决方案1】:

    在方法内部使用sleep,如下所示:

    sleep 2
    

    它会休眠 2 秒。

    小心地给出一个论点。如果您只是运行睡眠,则该进程将永远睡眠。 (当您希望线程休眠直到唤醒时,这很有用。)

    【讨论】:

      【解决方案2】:

      在方法定义中添加睡眠,这应该可以解决问题

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

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

      Geocoder.configure(
        timeout: 10
      )
      

      也可以看看this,这可能是您的任何一种情况,您现在唯一能做的就是等待。

      【讨论】:

      • 我们可以增加地理编码器 API 的大小。 Google API 错误:超出查询限制
      • 我会尝试这个,但这个问题“Google API 错误:超出查询限制”仍然出现
      • 你在说什么size
      • 你需要做的是,当你得到OVER_QUERY_LIMIT错误时,延迟,然后执行重试。
      猜你喜欢
      • 2015-10-15
      • 1970-01-01
      • 1970-01-01
      • 2019-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多