OVER_QUERY_LIMIT详细信息

时间:2015-04-11 20:56:28

标签: google-maps-api-3

Google Maps在某些情况下会返回OVER_QUERY_LIMITS状态。我正在寻找有关这些条件的详细信息。

我可以在延迟后重新提交路线服务路线请求来处理状态。我已经能够通过使用几个幻数'来管理和限制请求,从而最大限度地减少OVER_QUERY_LIMITS状态的数量。 setTimeout延迟。我担心的是,虽然这些神奇的数字'在我的机器上为我工作,在他们设置当天我的网络连接,在其他情况下可能是合适的。

有没有人有解决OVER_QUERY_LIMIT问题的经验,特别是对于不易受上述任何影响的自适应策略?

编辑---------------------------------------------- -----------------------

似乎问题可能不完全清楚。我发现并了解在线文档。问题在于它意味着什么,细节是什么,以及处理它们的策略。特别是:

每秒多少请求是什么""?它是1还是5或50还是什么?它是如何确定的?它的回应是什么?它如何随着使用而改变?

什么策略,特别是适应性策略,似乎可以解决这个问题?

再次编辑:也许它还不清楚。 ------------------------------------

在路线服务请求的特定情况下:

  • 是否有人知道每秒请求的实际值'?
  • 有人知道这个值是常数还是变化?
  • 是否有人知道它是否会改变影响变化的因素?
  • 有人知道在做另一次之前需要等待多长时间 路线服务请求?

更一般地说,是否有人知道这些与其他谷歌地图服务有何变化?

3 个答案:

答案 0 :(得分:2)

Google的服务受限于配额和速率限制(可能取决于服务器负载)。

From the documentation on OVER_QUERY_LIMIT in the web services

  

超出使用限制

     

如果超出使用限制,您将获得OVER_QUERY_LIMIT状态代码作为回复。

     

这意味着Web服务将停止提供正常响应并切换到仅返回状态代码OVER_QUERY_LIMIT,直到再次允许更多使用。这可能发生:

     
      
  • 如果因为您的应用程序每秒发送的请求过多而收到错误,则会在几秒钟内完成。
  •   
  • 在接下来的24小时内,如果因为您的应用程序每天发送了太多请求而收到错误。重置服务的每日配额的时间因客户和每个API而异,并且可能会随着时间的推移而发生变化。
  •   
     

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

答案 1 :(得分:1)

虽然引用文档似乎很流行,但似乎没有人真正了解每秒实际的请求数或者实际使用的算法。一些调查表明,最可能的算法是衰减率函数。我已经证明可以在突发中发出许多(> 15)请求,但是然后它只能在> 1000毫秒内发出一些(< 4)请求。一个显着的暂停允许重复相似但数量较小的数字。

我最终采用了排队限速功能。虽然它不是最快的方法(无法利用突发特性)但它很简单,并且看起来非常强大且极少有OVER_QUERY_LIMIT错误。

答案 2 :(得分:1)

当您尝试每秒请求超过8或9时,会出现此错误。 我通过以下代码解决了这个问题。

function(response, status) {
              if (status === 'OK') {
                    var directionsDisplay = new google.maps.DirectionsRenderer();
                    directionsDisplay.setMap(map);
                    directionsDisplay.setDirections(response);
              }
else if (status == google.maps.GeocoderStatus.OVER_QUERY_LIMIT) {
                wait = true;
                setTimeout("wait = true", 2000);
                //alert("OQL: " + status);
              }