2015-02-16 7 views
0

Я работаю с API Google Drive, и получаю следующее сообщение об ошибке при вводе с помощью уведомлений часов (каналы)пределы Google Drive файл API часы скорость

Error calling POST https://www.googleapis.com/drive/v2/files/xxxxxxxxxxxxxx/watch: (403) Rate limit exceeded for creating file subscriptions 

Есть ли конкретные, документально скорость ограничена для:

а) Запрос новых каналов (уведомление часов) в секунду

б) Параллельные каналы (уведомление часов) в день

у меня есть Rea d через этот вопрос 403 rate limit after only 1 insert per second, но на самом деле он не дает ответа

Я был бы признателен, если бы вы могли указать мне в правильном направлении.

ответ

1

Google, похоже, не документирует ограничение скорости в любом месте. Тем не менее они опубликовали документ, описывающий рекомендуемый подход для handling API errors.

Поток для реализации простой экспоненциальной выдержки следующим образом:

  1. Сделать запрос к API.
  2. Получите HTTP-протокол с ограничением скорости HTTP 403, который указывает, что вы должны повторить запрос.
  3. Подождите 1 + random_number_milliseconds секунд и повторите запрос.
  4. Получите HTTP-протокол с ограничением скорости HTTP 403, который указывает, что вы должны повторить запрос.
  5. Подождите 2 секунды, а затем повторите попытку.
  6. Получите HTTP-протокол с ограничением скорости HTTP 403, который указывает, что вы должны повторить запрос.
  7. Подождите 4 секунды, а затем повторите попытку.
  8. Получите HTTP-протокол с ограничением скорости HTTP 403, который указывает, что вы должны повторить запрос.
  9. Подождите 8 секунд, а затем повторите попытку.
  10. Получите HTTP-протокол с ограничением скорости HTTP 403, который указывает, что вы должны повторить запрос.
  11. Подождите 16 секунд, а затем повторите попытку.
  12. Остановить. Сообщите или зарегистрируйте ошибку.
2

403 ограничения скорости - ваш враг - избегайте их. Google ограничивает скорость, используя механизм токена/ковша. Это означает, что вы можете разбить несколько вызовов API примерно до 25-39 без каких-либо проблем. После этого токены пополняются примерно 1 раз в секунду. Обычно это означает, что после первых 30 большинство ваших последующих транзакций потерпят неудачу, если вы добровольно не дросселируете их ниже одного каждые 1,5 секунды. Это намного эффективнее, чем экспоненциальная отсрочка, что часто приводит к тому, что первая отсрочка также терпит неудачу, причем успех происходит на втором. Результатом является 3 вызова API-интерфейса Драйв с успешным вызовом 3 секунды (плюс сеть). Если вы заработаете после первых 403, каждая подписка будет единственным вызовом API Drive и будет успешной после 1,5 секунд. Если вы делаете много подписки, то эти дополнительные 1.5-х скоро будут добавлены.

Одной из проблем с 403 является то, что иногда транзакция действительно преуспела. Я сомневаюсь, что это проблема для подписки на часы, но может быть для вставок и некоторых обновлений.

Смежные вопросы