Ошибка 429: недостаточно токенов (DefaultGroupUSER-100) Что определяет пользователя?

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:

Код ошибки 429-а-тон

Многие из моих пользователей так и не дождались ответа даже на первый запрос.

Насколько я понимаю, это AnalyticsDefaultGroupUSER-100s ошибок, которые, согласно страница ответов об ошибках:

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

Но поскольку мое приложение запрашивает только один раз в 1000 миллисекунд, я не ожидал увидеть столько 429, поскольку у меня есть ограничение в 100 запросов в 100 секунд (1 в секунду), поэтому только пользователи, чье приложение не завершилось за 100 секунд, должны получили 429.

Я знаю, что мне следует внедрить экспоненциальную отсрочку (что я и сделаю, обещаю), но я беспокоюсь, что неправильно понимаю, что такое «пользователь» в этом контексте.

Каждый пользователь использует свое собственное устройство (поэтому, предположительно, имеет другой IP-адрес), но все они используют мой «Идентификатор клиента».

Учитывается ли в этом сценарии количество пользователей, делающих один запрос в секунду, или один пользователь, делающий сто запросов в секунду?


person LondonRob    schedule 16.01.2017    source источник
comment
Я только что нашел это, что предполагает, что мои запросы должны иметь уникальный идентификатор, либо userIp, либо quotaUser, ни один из которых я не включаю. Может ли это иметь значение?   -  person LondonRob    schedule 16.01.2017


Ответы (1)


Ну, пользователь в per user quota означает, что один пользователь делает запрос. Итак, давайте возьмем Sheets API, у него есть квота 100 для Read requests per 100 seconds per user. Это означает, что только один пользователь может сделать запрос в секунду. Обратите внимание, что запрос на чтение имеет тот же набор квот, что и запрос на запись. Но эти два набора квот имеют свой собственный набор квот и не имеют одной и той же предельной квоты.

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

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

Надеюсь, это поможет вам.

person KENdi    schedule 17.01.2017