Я использую API Google Drive для получения нескольких тысяч документов. Учетные данные, которые я использую для подключения, используют setServiceAccount и setServiceAccountPrivateKey.
Когда я начну делать запросы - через короткий промежуток времени я получу следующее:
{
"code" : 403,
"errors" : [ {
"domain" : "usageLimits",
"message" : "User Rate Limit Exceeded. Rate of requests for user exceed configured project quota. You may consider re-evaluating expected per-user traffic to the API and adjust project quota limits accordingly. You may monitor aggregate quota usage and adjust limits in the API Console: https://console.developers.google.com/apis/api/drive.googleapis.com/quotas?project=<projid>",
"reason" : "userRateLimitExceeded",
"extendedHelp" : "https://console.developers.google.com/apis/api/drive.googleapis.com/quotas?project=<projid>"
}
После несколько тысяч элементов, в итоге я получаю эту ошибку:
{
"code" : 403,
"errors" : [ {
"domain" : "usageLimits",
"message" : "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup.",
"reason" : "dailyLimitExceededUnreg",
"extendedHelp" : "https://code.google.com/apis/console"
} ],
"message" : "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup."
}
Я посетил страницу квот и у меня есть следующие значения (пользовательский интерфейс не позволил бы мне поднять эти квоты выше этих значений - они были максимально допустимыми):
Queries per day = 1,000,000,000
Queries per 100 seconds per user = 1,000
Queries per 100 seconds = 10,000
1) Можно ли увеличить квоту сверх 10 / с c для запросов на пользователя? Могу ли я запросить более высокую квоту, чем 10 / se c? Как?
2) Почему я получаю ошибки dailyLimitExceededUnreg? и как я могу избежать этого?
Некоторые фрагменты кода:
Credential credential = new GoogleCredential.Builder()
.setTransport(httpTransport)
.setJsonFactory(JSON_FACTORY)
.setServiceAccountId(serviceAccountId)
.setServiceAccountPrivateKey(gdrivePrivateKey)
.setServiceAccountScopes(ImmutableSet.of(DriveScopes.DRIVE,
DirectoryScopes.ADMIN_DIRECTORY_USER,
DirectoryScopes.ADMIN_DIRECTORY_GROUP))
.setServiceAccountUser(serviceAccount.getServiceAccountUser())
.build();
Иногда извлекает свойства файла:
File file = drive.files().get(itemid)
.setFields("id, name, createdTime, modifiedTime, size, webContentLink")
.execute();
или получает файл, используя один drive.files.export
или drive.files.get
Спасибо, Ху