我正在使用Google Maps JS库(https://developers.google.com/maps/documentation/javascript/)从JavaScript运行一个批处理地理编码。
不可避免地,我会收到间歇性的OVER_QUERY_LIMIT响应,因此我正在寻找可用于确保最大吞吐量的最佳算法。我已经阅读了文档中的“10/秒”和“等待2秒然后重试”。
问题是..。
查看开发控制台中的网络监视器,似乎OVER_QUERY_LIMIT故障不是来自服务器。所有通过服务器的请求都得到了正确的解决。那么,Google JS库是否正在进行自己的限制并返回该OVER_QUERY_LIMIT,如果是,它使用什么算法来限制?
我这样问是因为我看到的节流似乎没有任何意义,所以我正在考虑绕过这个库,使用我自己的服务器API调用。
发布于 2015-12-02 23:17:06
我做了一些测试,看起来google确实限制了客户端的请求。
我将间隔设置为每10毫秒,以获得两个点之间的方向,以下是输出:
VM5503:1 [Object, "OK", 1449067457886]
VM5503:1 [null, "OVER_QUERY_LIMIT", 1449067457888]
VM5503:1 [null, "OVER_QUERY_LIMIT", 1449067457895]
VM5503:1 [null, "OVER_QUERY_LIMIT", 1449067457904]
VM5503:1 [null, "OVER_QUERY_LIMIT", 1449067457914]
VM5503:1 [null, "OVER_QUERY_LIMIT", 1449067457924]
VM5503:1 [null, "OVER_QUERY_LIMIT", 1449067457934]
VM5503:1 [null, "OVER_QUERY_LIMIT", 1449067457944]
VM5503:1 [null, "OVER_QUERY_LIMIT", 1449067457954]
VM5503:1 [null, "OVER_QUERY_LIMIT", 1449067457964]
.............
VM5503:1 [null, "OVER_QUERY_LIMIT", 1449067458855]
VM5503:1 [null, "OVER_QUERY_LIMIT", 1449067458864]
VM5503:1 [null, "OVER_QUERY_LIMIT", 1449067458876]
VM5503:1 [null, "OVER_QUERY_LIMIT", 1449067458898]
VM5503:1 [Object, "OK", 1449067458903]
正如你所看到的,这里只有第一个和最后一个是成功的,时间差是: 1017ms。在这些请求中,只有2个真正到达了google服务器。
我为地理编码服务做了相同的过程-结论是相同的,只是成功的地理编码之间的时间大约是2000-2250ms。另一方面,对于前5个请求没有限制(这似乎在‘一些’时间后重置,可能是10秒)。
最后,我在文档中找不到任何关于这一点的东西,除了“OVER_QUERY_LIMIT”的意思--这是自解释的--配额限制。因此,我上面描述的行为不能持续很长时间。
编辑:时间似乎是一致的:
也许你的服务/网站吸引了谷歌的注意,因为你的服务/网站受到了更残酷的限制:)
发布于 2018-09-15 04:33:41
截至2018年7月16日的Google Maps平台最新使用情况更新。请参阅文档中的配额部分,了解“在Quota上新的每秒查询次数限制和使用上限。这给出了适用于JavaScript地图应用程序接口的每个不同API的使用上限表。例如,我在我的项目中使用了elevation,我需要确保我在一秒钟内查询的数据不超过100个。看起来每日限制/上限不再是一个限制因素。相关的,可能也是感兴趣的是定价:请参阅Pricing for Maps, Routes, and Places。
https://stackoverflow.com/questions/33898272
复制相似问题