2015-04-11 2 views
1

Карты Google возвращают статус OVER_QUERY_LIMITS при некоторых условиях. Я ищу информацию о том, что это за условия.OVER_QUERY_LIMIT подробнее

Я могу справиться со статусом, повторно отправив запрос маршрута службы маршрутов после задержки. Мне удалось свести к минимуму количество состояний OVER_QUERY_LIMITS, управляя и дросселируя запросы с несколькими задержками setTimeout «magic number». Я обеспокоен тем, что, хотя эти «магические числа» работают на моем компьютере с моим сетевым подключением в моем местоположении в тот день, когда они были установлены, они могут быть подходящими при других обстоятельствах.

Есть ли у кого-нибудь опыт обращения к проблеме OVER_QUERY_LIMIT, особенно с адаптивными стратегиями, не подверженными любому из вышеперечисленных?

Редактировать --------------------------------------------- ------------------------

Кажется, что вопрос может быть не совсем понятным. Я нашел и понял документацию в Интернете. Вопрос в том, что это значит, что такое детали, и о стратегиях борьбы с ними. В частности:

Что такое «для многих запросов в секунду»? Это 1 или 5 или 50 или что? Как это определяется? На что он реагирует? Как это меняется с использованием?

Какие стратегии, особенно адаптивные стратегии, как представляется, работают для решения этой проблемы?

Редактировать снова: Возможно, это еще не ясно. ------------------------------------

В конкретном случае запроса услуг по направлениям:

  • Кто-нибудь знает, что представляют собой фактические значения для запроса в секунду?
  • Кто-нибудь знает, является ли значение константой или оно изменяется?
  • Кто-нибудь знает, изменит ли он то, что влияет на изменение?
  • Кто-нибудь знает, сколько времени нужно ждать, прежде чем делать еще один запрос на услуги ?

В общем, кто-нибудь знает, как это изменится с другими сервисами карты google?

+0

возможно дубликат [OVER_QUERY_LIMIT в Google Maps API v3:? Как приостановить/задержка в Javascript, чтобы замедлить его] (http://stackoverflow.com/questions/11792916/over-query-limit- in-google-maps-api-v3-how-do-i-pause-delay-in-javascript-to-sl) – geocodezip

+0

Ваши изменения делают этот вопрос слишком широким для SO. См. [Как задать хороший вопрос] (http://stackoverflow.com/help/how-to-ask). Единственные люди, которые знают ответ на все ваши вопросы, будут в Google, и ответ не будет опубликован, потому что он может быть изменен. – geocodezip

ответ

2

Услуги Google зависят от квоты и лимита скорости (который может зависеть от нагрузки на сервер).

From the documentation on OVER_QUERY_LIMIT in the web services

Пределы использования превысил

Если вы превысите пределы использования вы получите OVER_QUERY_LIMIT код статуса в качестве ответа.

Это означает, что веб-служба перестанет обеспечивать нормальные ответы и переключится на возврат только кода состояния OVER_QUERY_LIMIT до тех пор, пока снова не будет разрешено больше использования. Это может случиться:

  • В течение нескольких секунд, если ошибка получена, потому что ваше приложение отправляет слишком много запросов в секунду.
  • Некоторое время в следующие 24 часа, если ошибка получена, потому что ваше приложение отправляет слишком много запросов в день. Время дня, в которое сбрасывается ежедневная квота для услуги, изменяется между клиентами и каждым API и может со временем меняться.

Получив ответ с кодом состояния OVER_QUERY_LIMIT, ваше приложение должно определить, какой предел использования был превышен. Это можно сделать, остановив паузу в течение 2 секунд и повторно отправив тот же запрос. Если код состояния по-прежнему OVER_QUERY_LIMIT, ваше приложение отправляет слишком много запросов в день. В противном случае ваше приложение отправляет слишком много запросов в секунду.

+0

Возможно, квесты были недостаточно ясными. См. Изменения. – rbell01824

1

Хотя цитирование документации кажется популярным, кажется, что никто не знает реальных запросов в секунду или многого о фактических используемых алгоритмах. Немногие исследования показывают, что наиболее вероятным алгоритмом является функция затухания скорости. Я продемонстрировал, что в пакете можно выдать много (> 15) запросов, но тогда можно выпустить несколько (< 4) запросов в> 1000 мс. Значительная пауза позволяет повторить с похожими, хотя и несколько меньшими числами.

В конечном итоге я принял функцию ограничения скорости в очереди. Хотя это не самый быстрый подход (неспособный извлечь выгоду из характеристики всплеска), он прост и, кажется, очень надежный с чрезвычайно небольшими ошибками OVER_QUERY_LIMIT.

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); 
       }