Как увеличить ограничения квоты API Google Sheets v4
Новый API Google Sheets v4 в настоящее время имеет неограниченную квоту для чтения / записи в день (что является фантастическим), но ограничен до 500 операций чтения / записи на аккаунт в течение 100 секунд и 100 операций чтения / записи на ключ в течение 100 секунд (или у меня есть найдено несколько ключей с одного и того же IP). Это, вероятно, достаточно для большинства случаев использования, но у меня есть крайний случай, который требует переноса часто обновляемого Google Sheet с 70 вкладками на сервер node.js, который распределяет их среди клиентов пользователя каждые ~30-60 секунд или около того (пользователи являются аннотаторами данных, которые являются научными сотрудниками студентов). Это было не так плохо в начале проекта, когда было только 20-30 вкладок, но теперь, когда объем данных велик, сервер проходит через квоту 100 и возвращает ошибки каждые 10-15 минут.
Проблема в том, что:
- Частые обновления данных: только данные на 1-5 из 70 вкладок, вероятно, будут обновляться в любую данную минуту, но для каких вкладок новые данные являются случайными (поэтому я опускаю весь лист из 70 = 70 операций чтения).
- Интервал обновления: потребность в обновлениях происходит случайным образом с интервалом от 30 до 5 минут (поэтому некоторые в пределах квоты, некоторые в 3-5 раз превышают квоту).
- Регулирование. Я пытался регулировать обновление до 100 вызовов /100 секунд (мое предыдущее решение), но это приводит к большим проблемам с юзабилити, значительно снижая удобство использования / производительность / качество работы.
- Увеличение квоты. В настоящее время API листов не включает способ оплаты за увеличение квоты. Это позволяет заполнить форму, чтобы запросить увеличение квоты, но я не уверен, что среднее время ответа на это (мой запрос только несколько дней).
- Несколько учетных записей служб. Я пытался использовать несколько учетных записей служб, чтобы получить полную квоту в 500 запросов /100 секунд (а не квоту на пользователя), поскольку это сервер, но Google Sheets рассчитывает ограничить скорость до 100 запросов /100. секунд с данного IP
- Альтернативы: я считал, что этот проект, возможно, только что вышел за рамки размера, легко поддающегося обработке Sheets, но, похоже, не существует хороших, пригодных для использования, самостоятельно размещенных, электронных таблиц для совместной работы с простыми в интерфейсе API-интерфейсами. там
Существуют ли настройки / методы, предлагаемые для достижения полных 500 вызовов /100 секунд для сервера?
2 ответа
Вы можете использовать spreadsheets.get, чтобы прочитать всю электронную таблицу за один вызов, а не 1 вызов за запрос. Кроме того, вы можете использовать spreadsheets.values.batchGet для чтения нескольких разных диапазонов за один вызов, если вам нужны только значения.
Drive API предлагает " push-уведомления", так что вы можете получать уведомления об изменениях и реагировать на них, а не опрашивать их. Задержка уведомлений немного медленная, но она выполняет свою работу.