【问题标题】:Hitting rate limit for google maps API, But don't know why达到谷歌地图 API 的速率限制,但不知道为什么
【发布时间】:2011-10-04 04:25:30
【问题描述】:

我编写了一个脚本来将地址发送到 Google 地图的 API 并接收回纬度和经度。但是,在 20 次左右的查询后,我收到了超出 Google 速率限制的错误消息。有什么我没有考虑的吗?

如果有任何帮助,我将不胜感激。我对使用 API 非常陌生,因此更好地理解我达到速率限制的原因会非常有帮助。

从名为 Location 的 csv 文件中读取地址后,下面是我的相关代码。

    for row in locations:
        address = 'XXX, New Haven, CT'
        first = re.search('^(.*),',row[0])
        address = re.sub('XXX',first.group(), address)
        lat, lng = gmaps.address_to_latlng(address)

我的错误信息如下。

    Traceback (most recent call last):
    File "<input>", line 5, in <module>
    File "/usr/local/Cellar/python/2.7.2/lib/python2.7/site-packages/googlemaps-1.
    0.2-py2.7.egg/googlemaps.py", line 310, in address_to_latlng
        return tuple(self.geocode(address)['Placemark'][0]['Point']['coordinates'][1
    ::-1])
      File "/usr/local/Cellar/python/2.7.2/lib/python2.7/site-packages/googlemaps-1.
    0.2-py2.7.egg/googlemaps.py", line 262, in geocode
        raise GoogleMapsError(status_code, url, response)
    GoogleMapsError: Error 620: G_GEO_TOO_MANY_QUERIES

【问题讨论】:

    标签: python geocoding google-maps-api-2


    【解决方案1】:

    每个gmaps.address_to_latlng 调用都会向 Google 服务器发送一个请求,您只能发出有限数量的请求。

    Google 在usage limits 上的文档:

    使用 Google 地理编码 API 的查询限制为每天 2,500 个地理定位请求。 [...] 此外,我们强制执行请求速率限制以防止滥用服务。

    还有docs on G_GEO_TOO_MANY_QUERIES

    给定的密钥在 24 小时内超过了请求限制,或者在太短的时间内提交了太多请求。如果您在并行或紧密循环中发送多个请求,请在代码中使用计时器或暂停,以确保您不会太快发送请求。

    所以,按照他们告诉你的去做:

    import time
    
    # And then in the loop, pause:
    time.sleep(1)
    

    将“1”调整为适当的秒数,这样您就不会用完允许的请求。

    【讨论】:

    • 我认为还有每秒 10 个请求的限制,这可能是这里要达到的限制。
    • 每日上限 2500 的限制是每 35 秒一个。
    • 完美解决了我的问题,谢谢!我错误地认为只有每日限制。如果有人想知道,1 秒的延迟没有问题,所以它绝对允许高于 1/秒的速率。
    • Paul 根据此 Google 常见问题解答页面是正确的:“还有适用于所有 Google Maps API Web 服务的每秒 10 个请求的速率限制。” - code.google.com/apis/maps/documentation/premier/…
    【解决方案2】:

    我发现大多数人(像我一样)都忽略了 google map api 中关于“请求速率限制”的部分,这与“每天的页面限制”不同。

    所以“请求速率限制”是每秒 10 个请求。

    因此,基于此,如果您显示一个包含 20 个静态地图的页面...并且最终用户具有快速的互联网连接(也许是您?)...

    那么这 20 个对谷歌地图 API 的请求发生得比 1 秒内更快...

    这样你就打破了他们的规则,他们阻止了图像显示。

    这是我刚刚在这里和那里阅读后的结论

    祝你好运

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-11
      • 2018-01-15
      • 1970-01-01
      • 2013-02-17
      • 1970-01-01
      • 2017-01-10
      • 1970-01-01
      • 2020-01-06
      相关资源
      最近更新 更多