Достигая ограничения скорости для API карт Google, но не знаю почему - PullRequest
7 голосов
/ 04 октября 2011

Я написал скрипт для отправки адреса в API Карт Google и получения обратно лат и Lng.Тем не менее, я получаю сообщения об ошибках, которые превысили лимит скорости Google после 20 или около того запросов.Есть что-то, что я не рассматриваю?

Буду признателен за любую помощь.Я очень новичок в использовании API, поэтому лучше понять, почему я бью ограничение по скорости.

После чтения адресов из CSV-файла с именем Location ниже приведен мой соответствующий код.

    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

Ответы [ 2 ]

8 голосов
/ 04 октября 2011

Каждый gmaps.address_to_latlng вызов отправляет запрос на сервер Google, и вы можете сделать только ограниченное количество таких запросов.

Документы Google по ограничения по использованию :

Использование API геокодирования Google ограничивается 2500 запросами геолокации в день. [...] Кроме того, мы применяем ограничение частоты запросов для предотвращения злоупотребления службой.

И документы на G_GEO_TOO_MANY_QUERIES :

Данный ключ превысил лимит запросов за 24 часа или отправил слишком много запросов за слишком короткий промежуток времени. Если вы отправляете несколько запросов параллельно или в замкнутом цикле, используйте таймер или паузу в своем коде, чтобы убедиться, что вы не отправляете запросы слишком быстро.

Итак, делайте только то, что вам говорят:

import time

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

Настройте «1» на соответствующее количество секунд, чтобы избежать исчерпания разрешенных запросов.

2 голосов
/ 21 ноября 2011

У меня есть со мной понять, что большинство людей (как и я) пропускают часть в API карты Google, в которой говорится о «пределе скорости запросов», которое отличается от «лимита страниц в день».

таким образом, «предел скорости запросов» составляет 10 запросов в секунду.

Итак, исходя из этого, если вы отображаете страницу с 20 статическими картами ... и у конечного пользователя есть быстрое подключение к Интернету (может быть, у вас?) ...

тогда эти 20 запросов к API карты Google выполняются быстрее, чем за 1 секунду ...

, поэтому вы нарушаете их настройку и блокируете отображение изображений.

это мой вывод после только что прочитанного здесь и там

удачи

...