tl/dr учитывают ли 100 устройств, использующих тот же идентификатор клиента, что и 100 пользователей, с собственными ограничениями или ограничениями на общий доступ для одного пользователя?
У меня есть веб-страница, которая читает и записывает в Google Sheet.
Поскольку веб-странице необходимо знать, изменилась ли ячейка, она опрашивает сервер каждые 1000 мс:
var pollProcId = window.setInterval(pollForInput, 1000);
где pollForInput
делает сингл:
gapi.client.sheets.spreadsheets.values.get(request).then(callback);
Когда я попытался использовать это приложение с классом из 100 учеников, я получил много кодов ошибок 429
(больше, чем успешных считываний) в ответ на запросы google.apps.sheets.v4.SpreadsheetsService.GetValues
:
Многие из моих пользователей так и не дождались ответа даже на первый запрос.
Насколько я понимаю, это AnalyticsDefaultGroupUSER-100s
ошибок, которые, согласно страница ответов об ошибках:
Указывает, что квота запросов на 100 секунд на пользователя в проекте исчерпана.
Но поскольку мое приложение запрашивает только один раз в 1000 миллисекунд, я не ожидал увидеть столько 429
, поскольку у меня есть ограничение в 100 запросов в 100 секунд (1 в секунду), поэтому только пользователи, чье приложение не завершилось за 100 секунд, должны получили 429
.
Я знаю, что мне следует внедрить экспоненциальную отсрочку (что я и сделаю, обещаю), но я беспокоюсь, что неправильно понимаю, что такое «пользователь» в этом контексте.
Каждый пользователь использует свое собственное устройство (поэтому, предположительно, имеет другой IP-адрес), но все они используют мой «Идентификатор клиента».
Учитывается ли в этом сценарии количество пользователей, делающих один запрос в секунду, или один пользователь, делающий сто запросов в секунду?
userIp
, либоquotaUser
, ни один из которых я не включаю. Может ли это иметь значение? - person LondonRob   schedule 16.01.2017