Превышен лимит скорости пользователя для API GMail с использованием C # MCV - PullRequest
0 голосов
/ 20 ноября 2018

Может ли кто-нибудь помочь мне получить решение Превышен лимит пользовательской скорости для API GMail с использованием приложения C # MCV.Я застрял с этим с последних 5 дней.В интернете не было документов.Нет решения от Google также.У меня включен биллинг для доступа к службе Google.Используя код как ...

var certificate = new X509Certificate2(AssemblyDirectory + string.Format("\\{0}",CertificateFileName), CertificatePassword, X509KeyStorageFlags.Exportable);

ServiceAccountCredential credential = new ServiceAccountCredential(new ServiceAccountCredential.Initializer(ServiceAccountEmail)
               {
                   Scopes = new[] { GmailService.Scope.GmailModify },
                   User=this.User
               }.FromCertificate(certificate));

 // Create the service.
 service = new GmailService(new BaseClientService.Initializer()
            {
                HttpClientInitializer = credential,
                ApplicationName = this.ApplicationName,
                ApiKey="xxxxxxxxxxxxxxxxxxx",
            }); 

ListLabelsResponse response = service.Users.Labels.List("me").Execute();
Labels = response.Labels.ToList();
if (!Labels.Select(l => l.Name).Contains("Processed"))
    {
         Labels.Add(CreateLabel("Processed"));
    }

1 Ответ

0 голосов
/ 20 ноября 2018

Пояснение

Сообщения об ошибках ограничения скорости пользователей защищены от наводнений.Текущий пользователь, в который вы вошли, так как он является вашей учетной записью службы, может делать только Х количество запросов в минуту / секунду

enter image description here

Как вы можете видеть,пользователь может сделать максимум 25 000 запросов за 100 секунд.Ваше приложение может сделать не более 2 000 000 запросов за 100 секунд.Gmail также имеет некоторые другие ограничения в отношении отправки почты , которые не были задокументированы.

Ничего нельзя сделать, когда вы достигнете квоты ограничения скорости пользователя, кроме как замедлить работу приложения.

Стандартные сообщения об ошибках

403: превышен предел скорости пользователя. Достигнут предел для каждого пользователя.Это может быть ограничение из консоли разработчика или ограничение из бэкэнда накопителя.

{
 "error": {
  "errors": [
   {
    "domain": "usageLimits",
    "reason": "userRateLimitExceeded",
    "message": "User Rate Limit Exceeded"
   }
  ],
  "code": 403,
  "message": "User Rate Limit Exceeded"
 }
}

Предлагаемые действия:

Использовать экспоненциальный откат.

403: Превышен лимит скорости. Пользователь достиг максимальной частоты запросов Google Drive API.Предел варьируется в зависимости от типа запросов.

{
 "error": {
  "errors": [
   {
    "domain": "usageLimits",
    "message": "Rate Limit Exceeded",
    "reason": "rateLimitExceeded",
   }
  ],
  "code": 403,
  "message": "Rate Limit Exceeded"
 }
}

Предлагаемые действия:

Использование экспоненциального отката.

Реализация экспоненциального отката

Экспоненциальный откат - это стандартная стратегия обработки ошибок для сетевых приложений, в которой клиент периодически повторяет неудавшийся запрос в течение все большего промежутка времени.Если большой объем запросов или интенсивный сетевой трафик заставляет сервер возвращать ошибки, экспоненциальный откат может быть хорошей стратегией для обработки этих ошибок.И наоборот, это не уместная стратегия для устранения ошибок, не связанных с ограничением скорости, объемом сети или временем отклика, таких как недействительные учетные данные авторизации или ошибки «файл не найден».

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

Создание запросов не идемпотентно.Простая повторная попытка недостаточна и может привести к дублированию объектов.Перед повторной попыткой проверить, существует ли сущность.

Биллинг

Невозможно увеличить ограничения скорости, которыми они пользуются, чтобы не дать разработчикам заполонить серверы Googles.Gmail API - это бесплатное приложение, позволяющее оплачивать счета мало что поможет

Примечание

TBH Я был бы удивлен, если вы получаете это от выполнения Users.Labels.List("me"), если у вас не работает этот код для каждого пользователя, попадающего на ваш сайт, а не кеширующегоданные.

...