簡體   English   中英

谷歌地圖API的命中率限制,但不知道為什么

[英]Hitting rate limit for google maps API, But don't know why

我寫了一個腳本來向Google Maps的API發送地址並收回Lat和Lng。 但是,我收到的錯誤消息是,我在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

每個gmaps.address_to_latlng呼叫都會向Google服務器發送一個請求,您只能進行有限數量的請求。

Google關於使用限制的文檔:

使用Google地理編碼API每天的查詢限制為2,500個地理定位請求。 [...]此外,我們強制執行請求速率限制以防止濫用服務。

G_GEO_TOO_MANY_QUERIES文檔

給定密鑰在24小時內超過了請求限制,或者在一段時間內提交了太多請求。 如果您要並行或緊密循環發送多個請求,請使用計時器或暫停代碼以確保不會過快地發送請求。

那么,做他們告訴你的事情:

import time

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

將“1”調整到適當的秒數,這樣就不會耗盡允許的請求。

我讓我意識到,大多數人(像我一樣)省略了谷歌地圖api中關於“請求率限制”的部分,該部分與“每日限制頁數”不同。

所以'請求率限制'是每秒10個請求。

因此,如果你顯示一個包含20個靜態地圖的頁面......並且最終用戶有一個快速的互聯網連接(也許你呢?)...

然后那些對谷歌地圖API的20個請求發生得更快,然后在1秒內...

因此,你打破他們的ryle,他們阻止圖像顯示。

這是我剛才在這里和那里閱讀之后的結論

祝好運

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM