OVER_QUERY_LIMIT和Javascript库

时间:2015-11-24 15:58:34

标签: google-maps-api-3

我使用Google Maps JS库(https://developers.google.com/maps/documentation/javascript/)从JavaScript运行批量地理编码。

我不可避免地得到间歇性的OVER_QUERY_LIMIT响应,因此我正在寻找最佳算法来确保最大吞吐量。我已经阅读了" 10 / sec"并且等待2然后再试一次"来自文档。

这是问题......

查看开发控制台中的网络监视器,似乎OVER_QUERY_LIMIT失败并非来自服务器。正确解决了通过服务器的所有请求。那么,Google JS库是否正在进行自己的限制并返回OVER_QUERY_LIMIT,如果是这样,它会使用什么算法进行限制?

我问,因为我看到的节流似乎没有任何意义所以我考虑绕过库并使用我自己的服务器API调用。

1 个答案:

答案 0 :(得分:0)

我做了一些测试,似乎谷歌确实在客户端限制请求。

我每隔10ms设置一个间隔以获得2点之间的方向,这是输出:

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个实际上是谷歌服务器。

我为地理编码服务做了相同的程序 - 结论是一样的,成功的地理编码之间的时间大约是2000-2250ms。另一方面,前5个请求没有限制(这似乎在'一段'时间后重置,可能是10秒)。

最后我在文档中找不到任何关于此的内容,除了“OVER_QUERY_LIMIT”的含义 - 这是自解释的 - 配额限制。因此,上面描述的行为不能被信任持续很长时间。

编辑: 时间似乎是一致的: enter image description here

也许您的服务/网站引起了谷歌的注意,因为更加残酷的限制:)