Ответ API геокодирования останавливается после 2500 запросов - PullRequest
0 голосов
/ 16 ноября 2018

Я использую API геокодирования для обработки списков адресов с помощью модуля 'геокодер' в Python.Совсем недавно, несколько недель назад, я смог сделать это успешно, но сегодня API перестал отвечать после 2500 вызовов.Я не получил никаких сообщений об ошибках, и если я перезапустил процесс, я смог получить еще 2500 ответов, но потом ничего больше.Кто-нибудь знает, почему это может происходить?Единственной ссылкой на ограничение в 2500 было ежедневное ограничение бесплатных звонков в предыдущей модели ценообразования.

enter image description here

edit: Интересно, что проблема, кажется,изолированы от моего использования модуля геокодера.Когда я бросаю свою собственную, у меня не возникает та же проблема.

Функция с использованием геокодера:

def get_data(query):
    result = geocoder.google(query, key=apikey)
    return {'formatted_address':result.address, 
        'lat':result.lat, 
        'long':result.lng}

Функция с использованием только запросов:

def get_data(query):
    try:
        api_response = requests.get('https://maps.googleapis.com/maps/api/geocode/json?address='+query+'&key='+apikey)
        read_response = api_response.json()
        address = read_response['results'][0]['formatted_address']
        lat = read_response['results'][0]['geometry']['location']['lat']
        lng = read_response['results'][0]['geometry']['location']['lng']
        return {'formatted_address':address, 'lat':lat, 'lng':lng}
    except:
        return None

Стоит отметитьчто я на новом компьютере с момента последнего успешного запуска, и с тех пор, как я переключился, я столкнулся с какой-то странной корпоративной брандмауэром.Просто казалось, что такое странное поведение для проблемы на моей стороне, я наверняка думал, что столкнулся с ограничением API.Я предполагаю, что я просто зарегистрирую проблему на git геокодера и продолжу.

Ответы [ 2 ]

0 голосов
/ 31 января 2019

Вам необходимо передать параметр

rate_limit = False

в ваш запрос.Таким образом, ваш запрос выше должен быть

result = geocoder.google(query, key=apikey, rate_limit=False)

Примечание: это работает, потому что модуль 'google.py' по умолчанию вызывает декоратор

@ratelim.greedy(2500, 60 * 60 * 24) # Line 271 in google.py

Так что альтернативным вариантом будет изменить этозначение в исходном коде.

0 голосов
/ 29 ноября 2018

Стандартный предел использования API Google составляет 2500 бесплатных запросов в день, рассчитывается как сумма запросов на стороне клиента и на стороне сервера.

Если вы хотите увеличить свой дневной лимит, вам необходимо обновить пакет использования API из консоли биллинга.

См. эту ссылку для получения дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...