为了账号安全,请及时绑定邮箱和手机立即绑定

Google Places API:OVER_QUERY_LIMIT 问题是间歇性的

Google Places API:OVER_QUERY_LIMIT 问题是间歇性的

繁星淼淼 2022-07-05 17:36:33
我知道以前有人问过这个问题,但我的问题与其他线程略有不同。我编写了一个 python 脚本来读取随机地址并返回它们的位置 ID。这是我的 excel 文件的样子:这是我的代码:from googleplaces import GooglePlacesimport pandas as pdimport timeimport xlrdYOUR_API_KEY = <my_key>google_places = GooglePlaces(YOUR_API_KEY)loc = r"C:\Users\user\Desktop\test.xlsx"wb = xlrd.open_workbook(loc)sheet = wb.sheet_by_index(0)for i in range(1,sheet.nrows):    read_address = sheet.cell_value(i,0)    query_result = google_places.text_search(        query=''+read_address)    for place in query_result.places:        print(place.name)        print(place.place_id)控制台输出:C:\Users\csjeemah\PycharmProjects\googleplaces\venv\Scripts\python.exe C:/Users/csjeemah/PycharmProjects/googleplaces/googleplaceID.py777 Brockton AveChIJmf-3TW6b5IkR1rx0eohvqPQ30 Memorial DrChIJXa_KpmGD5IkRYtpt2IsXmqgTraceback (most recent call last):  File "C:/Users/csjeemah/PycharmProjects/googleplaces/googleplaceID.py", line 27, in <module>    query_result = google_places.text_search(  File "C:\Users\csjeemah\PycharmProjects\googleplaces\venv\lib\site-packages\googleplaces\__init__.py", line 353, in text_search    _validate_response(url, places_response)  File "C:\Users\csjeemah\PycharmProjects\googleplaces\venv\lib\site-packages\googleplaces\__init__.py", line 175, in _validate_response    raise GooglePlacesError(error_detail)googleplaces.GooglePlacesError: Request to URL https://maps.googleapis.com/maps/api/place/textsearch/json?query=250+Hartford+Avenue%2C+Bellingham+MA+2019&radius=3200&language=en&key=mykey&sensor=false failed with response code: OVER_QUERY_LIMIT在上面的控制台屏幕截图中,它返回前 2 个地址的结果,然后发生错误。现在我明白我收到此错误的原因是由于我可以发出的请求数量受到限制,但你可以从上图看:只有 9 个地址。如果我缩短一些地址,如下所示:它现在在失败之前检索更多地址:C:\Users\csjeemah\PycharmProjects\googleplaces\venv\Scripts\python.exe C:/Users/csjeemah/PycharmProjects/googleplaces/googleplaceID.py777 Brockton AveChIJmf-3TW6b5IkR1rx0eohvqPQ30 Memorial DrChIJt_pwFGsUc2sR-ve6pnT9DlA30 Memorial DrChIJJatf08pZIWsRr2u-ppt2CyI我还尝试在每次查询后添加睡眠几秒钟,但失败了,谁能告诉我问题是什么?
查看完整描述

2 回答

?
扬帆大鱼

TA贡献1799条经验 获得超9个赞

图片中的错误 json 清楚地表明您已经超出了 places API 的每日请求配额。

如果您想继续,您需要将您的 GCP 项目与结算帐号相关联



查看完整回答
反对 回复 2022-07-05
?
米脂

TA贡献1836条经验 获得超3个赞

直接来自Google Maps Platform Web Services 的文档使用限制

您可以通过以下方式超出 Google Maps Platform 网络服务使用限制:

  • 每天发送太多请求。

  • 发送请求太快,即每秒请求太多。

  • 发送请求太快太久或以其他方式滥用 Web 服务。

  • 超出其他使用限制,例如 Elevation API 中每个请求的点数。

收到状态码为 OVER_QUERY_LIMIT 的响应后,您的应用程序应确定已超出哪个使用限制。这可以通过暂停 2 秒并重新发送相同的请求来完成。如果状态码仍为 OVER_QUERY_LIMIT,则您的应用程序每天发送的请求过多。否则,您的应用程序每秒发送的请求过多。

url = "MAPS_API_WEBSERVICE_URL"

attempts = 0

success = False


while success != True and attempts < 3:

  raw_result = urllib.urlopen(url).read()

  attempts += 1

  # The GetStatus function parses the answer and returns the status code

  # This function is out of the scope of this example (you can use a SDK).

  status = GetStatus(raw_result)

  if status == "OVER_QUERY_LIMIT":

    time.sleep(2)

    # retry

    continue

  success = True


if attempts == 3:

  # send an alert as this means that the daily limit has been reached

  print "Daily limit has been reached"


查看完整回答
反对 回复 2022-07-05
  • 2 回答
  • 0 关注
  • 159 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信