【问题标题】:Geocoding API Response Stops After 2,500 Requests地理编码 API 响应在 2,500 个请求后停止
【发布时间】:2018-11-16 20:09:32
【问题描述】:

我使用地理编码 API 来处理使用 Python 中的“地理编码器”模块的地址列表。就在几周前,我能够成功地做到这一点,但今天 API 在 2,500 次调用后停止响应。我没有收到任何错误响应,如果我重新启动该过程,我能够获得额外的 2,500 个响应,但之后再没有任何响应。有谁知道为什么会发生这种情况?唯一提到 2,500 的上限是以前定价模型的每日免费通话限制。

编辑:有趣的是,这个问题似乎与我对地理编码器模块的使用无关。当我自己滚动时,我没有遇到同样的问题。

使用地理编码器的功能:

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 上记录问题并继续前进。

【问题讨论】:

  • 可能是您的代码上限为 2500。在某处硬编码?以字符串形式搜索。

标签: google-geocoding-api


【解决方案1】:

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

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

请参阅this link 了解更多信息。

【讨论】:

    【解决方案2】:

    需要传递参数

    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
    

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

    【讨论】:

    • 有趣。我在他们的文档中找不到有关该参数的任何信息,您怎么知道要这样做?我已经使用 requests 恢复到我自己的方法,但是当我有机会尝试这个并接受你的答案时,如果它有效。
    • 我在文档中的任何地方都没有看到它,但发现它在这里的地理编码器源代码中挖掘:link...查看从第 263 - 280 行开始的代码。跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 2012-07-05
    • 1970-01-01
    • 2021-07-01
    • 1970-01-01
    相关资源
    最近更新 更多