将许多请求发送到Google Maps Geocoding API的正确方法是什么?

克里斯

我的目标是将大量地址地理编码为LatLng对象。我只能使用Google,而不能使用其他可能支持批量请求的API。因此,我必须使用1个请求= 1个地址,但是我一直在获取OVER_QUERY_LIMIT不知道怎么可能,因为根据官方文档,我应该能够对客户端每秒每秒50个地址进行地址解析。

我的第一个想法是立即发出50个请求,等待所有请求返回,暂停一秒钟,然后继续下50个地址...因此简化的代码如下所示:

const geocoder = new google.maps.Geocoder();
const allAddresses = [ /* 500 addresses */ ];
geocodeAddresses(allAddresses);

function geocodeAddresses(addresses) {
  const last50 = addresses.splice(-50);
  Promise.allSettled(
    last50.map((address) =>
      new Promise((resolve, reject) =>
        geocoder.geocode({
          address
        }, (results, status) => {
          console.log("Geocoded! Response: " + status);
          resolve();
        })))
  ).then(() =>
    setTimeout(() => geocodeAddresses(addresses), 1000)
  );
}

此代码一次成功返回前10个请求,然后由于配额限制而对其他请求失败(为什么?)。

因此,我决定每次处理一次请求时都延迟500毫秒,这已经非常慢了。然后,我将以2000ms的超时重复OVER_QUERY_LIMIT个请求。结果很奇怪:

  • 前〜200个请求都顺利
  • 下一个〜50个请求:重复〜10个请求
  • 下一个〜30个请求:重复〜15个请求
  • 下一个〜10个请求:重复〜10个请求(每个失败在成功之前)

在完成约350个请求后,每个请求均失败了5-6次,而且速度确实很慢。看来它可能成倍地失败。

用Google对我的所有地址进行地理编码的最快方法是什么?谢谢!

地理编码

相关问题:

看到:

这个部分:

管理错误和重试

如果您收到OVER_QUERY_LIMIT状态代码作为响应,则表明您已经超出了API的使用限制我们建议您尝试这些用法优化策略

速率限制
地理编码服务的速率限制为50 QPS(每秒查询),计算方式为客户端和服务器端查询的总和。

该Web服务的文档中有一个建议:使用Google Maps API Web服务使用指数退避的最佳做法

指数回退
在极少数情况下,为您的请求服务可能会出错。您可能会收到4XX或5XX HTTP响应代码,或者客户端和Google服务器之间的TCP连接可能会失败。通常值得重新尝试该请求,因为后续请求在原始请求失败时可能会成功。但是,重要的是不要简单地循环反复向Google服务器发出请求。这种循环行为可能会使您的客户和Google之间的网络过载,从而给许多方面带来麻烦。

更好的方法是尝试之间的延迟增加,然后重试。通常,每次尝试都会使延迟增加一个倍增因子,这种方法称为指数退避

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

哪些数据发送到Google Maps API

来自分类Dev

Google Geocoding Without API Key

来自分类Dev

通过API请求将大数据集发送到客户端的一种好方法是什么?

来自分类Dev

Google Geocoding API返回错误的语言作为响应

来自分类Dev

使用Google Maps JavaScript API v3和Geocoding API映射多个位置

来自分类Dev

Google Maps Geocoding API中的CORS错误

来自分类Dev

为什么Google Geocoding API没有密钥就可以工作?

来自分类Dev

为什么我不能使用PHP curl向Google Maps API发送太多请求?

来自分类Dev

Google Maps Geocoding不起作用

来自分类Dev

Google Maps Geocoding的API密钥

来自分类Dev

这是什么意思?(Google Maps API)

来自分类Dev

将Google Maps标记位置发送到拖动的Flask

来自分类Dev

使用Google Geocoding API进行VBA编程

来自分类Dev

如何使用Mockito / Powermock模拟Google的Geocoding API请求?

来自分类Dev

使用Guzzle 6创建异步json请求池以发送到API端点的正确方法是什么?

来自分类Dev

使用Android应用程序,服务,套接字和Google Maps API-正确的方法是什么?

来自分类Dev

如何在HERE Maps Geocoding and Search API v7中为反向Geocode端点指定搜索半径?

来自分类Dev

Google脚本将GET请求发送到Trello API并将数据导入到Google Sheet

来自分类Dev

将ThreadFunction传递给CreateThread API的正确方法是什么

来自分类Dev

将请求发送到Java中的Google Elevation API

来自分类Dev

将请求参数从操作方法发送到jsp

来自分类Dev

在angular-google-maps中,绑定到多边形上的点击事件的正确方法是什么

来自分类Dev

每秒Google Maps Geocoding API的配额限制与文档不匹配

来自分类Dev

授权此REST API请求的“正确方法”是什么?

来自分类Dev

Google Maps API-此行的含义/功能是什么?

来自分类Dev

Google Maps API请求

来自分类Dev

使用jQuery从Google Geocoding API读取JSON数据

来自分类Dev

Google Geocoding API不再每次都显示地区

来自分类Dev

Google 地图 API/Geocoding Uncaught ReferenceError: google is not defined

Related 相关文章

  1. 1

    哪些数据发送到Google Maps API

  2. 2

    Google Geocoding Without API Key

  3. 3

    通过API请求将大数据集发送到客户端的一种好方法是什么?

  4. 4

    Google Geocoding API返回错误的语言作为响应

  5. 5

    使用Google Maps JavaScript API v3和Geocoding API映射多个位置

  6. 6

    Google Maps Geocoding API中的CORS错误

  7. 7

    为什么Google Geocoding API没有密钥就可以工作?

  8. 8

    为什么我不能使用PHP curl向Google Maps API发送太多请求?

  9. 9

    Google Maps Geocoding不起作用

  10. 10

    Google Maps Geocoding的API密钥

  11. 11

    这是什么意思?(Google Maps API)

  12. 12

    将Google Maps标记位置发送到拖动的Flask

  13. 13

    使用Google Geocoding API进行VBA编程

  14. 14

    如何使用Mockito / Powermock模拟Google的Geocoding API请求?

  15. 15

    使用Guzzle 6创建异步json请求池以发送到API端点的正确方法是什么?

  16. 16

    使用Android应用程序,服务,套接字和Google Maps API-正确的方法是什么?

  17. 17

    如何在HERE Maps Geocoding and Search API v7中为反向Geocode端点指定搜索半径?

  18. 18

    Google脚本将GET请求发送到Trello API并将数据导入到Google Sheet

  19. 19

    将ThreadFunction传递给CreateThread API的正确方法是什么

  20. 20

    将请求发送到Java中的Google Elevation API

  21. 21

    将请求参数从操作方法发送到jsp

  22. 22

    在angular-google-maps中,绑定到多边形上的点击事件的正确方法是什么

  23. 23

    每秒Google Maps Geocoding API的配额限制与文档不匹配

  24. 24

    授权此REST API请求的“正确方法”是什么?

  25. 25

    Google Maps API-此行的含义/功能是什么?

  26. 26

    Google Maps API请求

  27. 27

    使用jQuery从Google Geocoding API读取JSON数据

  28. 28

    Google Geocoding API不再每次都显示地区

  29. 29

    Google 地图 API/Geocoding Uncaught ReferenceError: google is not defined

热门标签

归档