Каков предел скорости для Google Vault Api?
Я пытаюсь создать запрос на экспорт для всех пользователей в моей организации с помощью Google Vault API на python.
Я попытался замедлить свои запросы API с помощью time.sleep(x). Я попытался изменить сценарий, чтобы он работал по одной учетной записи за раз, с ручным запуском указанного сценария.
if not result:
print('No matters found.')
else:
#error checking for user list
if not emails:
print("missing users list")
else:
for user in emails:
req = {
"name":user,
"query":{
"corpus":'DRIVE',
"dataScope":'ALL_DATA',
"searchMethod":'ACCOUNT',
"accountInfo":{
"emails":[user]
}
}
}
#create drive export request
userReq = vaultservice.matters().exports().create(matterId=matters[0]['matterId'],body=req).execute()
print ("completed request: {0}".format(user))
time.sleep(10)
Когда я выполнял экспорт всей организации, создается гигантский zip-файл, который бесполезен, потому что я не знаю, что кому принадлежит. Затем я попытался создать отдельные запросы на экспорт.
При использовании текущего скрипта я вижу эту ошибку: "Превышена квота для метрики квоты 'vault.googleapis.com/export_writes' и ограничена 'ExportWritesPerMinutePerProject' службы 'vault.googleapis.com'"
Иногда я успешно выполняю один экспорт, иногда два, но потом возникает ошибка. Каков предел скорости для Google Vault или как еще мне выполнить свою задачу?
Обновление Я только что запустил панель управления API и обнаружил, что лимит квоты по умолчанию для экспортных записей составляет 20 в минуту. Однако тогда я не понимаю, почему я столкнулся с проблемой ограничения. Даже с измененным засыпанием (60) перед созданием экспорта он достигает пика в 20 запросов и ограничивает меня. Думаю, я не понимаю, почему мой скрипт создает так много запросов в секунду, когда я считаю, что он должен создавать только один.
3 ответа
Похоже, у Google есть проблема с измерением запросов. Они считают, что на один запрос отправлено 10 запросов. Таким образом, вы должны оставаться ниже 2 запросов в минуту. Например, используйте задержку в 31 секунду в вашем коде.
Это потому, что вы достигли предела. Операции записи экспорта не учитываются как одно обращение к API для каждого обращения. Он учитывает 10 попаданий при экспортной записи, когда вы создаете экспорт с использованием API. Таким образом, после 2 обращений вы израсходуете квоту на 20 экспортных записей, а для третьего запроса вы получите ответ о превышении квоты. Вы можете проверить следующую ссылку, чтобы проверить, как Google считает каждый Обращение к API для каждой квоты [1]: https://developers.google.com/vault/limits .
Это действительно проблема с измерителем API Google, и эту проблему легко воспроизвести. Использование собственного образца кода Google и его трехкратное выполнение приведет к достижению предела в 20 ExportWritesPerMinutePerProject всего за 3 попытки.
Google Issue Tracker работает уже более 2 лет - https://issuetracker.google.com/issues/131206384