2500个请求后,地址解析API响应停止

时间:2018-11-16 20:09:33

标签: google-geocoding-api

我使用地理编码API通过Python中的“地理编码器”模块处理地址列表。就在几周前,我能够成功完成此操作,但是今天,该API在经过2500次调用后就停止了响应。我没有收到任何错误响应,如果重新启动该过程,则可以再获得2500个响应,但此后再也没有响应。有谁知道为什么会这样?上限为2500的唯一参考是以前定价模式下的每日免费通话限额。

enter image description here

edit:有趣的是,这个问题似乎与我对Geocoder模块的使用无关。当我自己滚动时,我不会遇到相同的问题。

使用地址解析器的功能:

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 :(得分:0)

Google标准API使用限制是每天2500个免费请求,以客户端和服务器端查询的总和计算。

如果您想增加每日限额,则必须从结算控制台升级API使用包。

有关更多信息,请参见this link

答案 1 :(得分:0)

您需要传递参数

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

因此,另一种选择是在源代码中更改该值。