Помогает ли пакетная обработка запросов API Google Диска смягчить ошибки RateLimitExceeded?

В настоящее время наше приложение выполняет множество вызовов API Google Диска для получения изменений, разрешений, файлов и т. д. В настоящее время мы боремся с ошибками 403 rateLimitExceeded.

Согласно документации здесь, есть два решения:

  1. Пакетные запросы.
  2. Используйте экспоненциальную отсрочку, чтобы повторить запрос.

Мы хотели бы реализовать пакетную обработку, чтобы уменьшить количество ошибок. Однако согласно документации здесь:

Набор из n запросов, объединенных вместе, учитывается при расчете лимита использования как n запросов, а не как один запрос. Перед обработкой пакетный запрос разбивается на набор запросов.

Я предполагаю, что мой вопрос заключается в следующем: учитывается ли набор из n запросов как часть одного пакета как n запросов в отношении ограничения скорости? Это означает, что если пакет содержит столько запросов, сколько вызовет 403 rateLimitExceeded, будет ли возвращаться эта ошибка?

Любая помощь приветствуется.


person AnansiRafa    schedule 10.02.2021    source источник


Ответы (1)


Да, действительно, набор из n запросов в одном пакете считается как n запросов в отношении ограничения скорости использования. Помимо примечания, которое вы упомянули в своих вопросах, другие разделы документации (например, этот) описывают следующее:

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

Из предыдущей примечания и этой информации становится ясно, что каждый запрос в пакетном запросе считается отдельным запросом, который, таким образом, считается до предела скорости.

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

Я бы посоветовал вам использовать комбинацию обоих. Если вам необходимо сделать несколько пакетных запросов (поскольку вы делаете >100 запросов), я бы рекомендовал вам использовать экспоненциальную отсрочку для этих пакетных запросов.

person Mateo Randwolf    schedule 11.02.2021