Дросселирование в OneDrive - PullRequest
       8

Дросселирование в OneDrive

0 голосов
/ 07 сентября 2018

У нас есть зарегистрированное приложение AAD, помеченное как мультитенантное. Мы используем этот идентификатор приложения для создания токена для Microsoft Graph.

  • Первый пользователь - Глобальный администратор в Арендаторе, где зарегистрировано приложение.
  • Второй пользователь является частью другого Арендатора.

Когда второй пользователь пытался использовать Microsoft Graph для получения информации от OneDrive, мы иногда получаем ошибку HTTP 429 activityLimitReached.

Мы прочитали руководство о throttling , и там говорится, что необходимо повторить запрос после значения Retry-After из заголовка ответа. Но в нашем случае в ответе нет поля Retry-After.

Мы получили эту ошибку, выполняя один запрос в день. Также после получения 429 мы можем повторить попытку и получить успешный результат (после нескольких попыток). Эта ошибка появляется только в OneDrive, другие службы в порядке.

Что мы можем сделать, чтобы избежать ошибки 429? Как мы можем проверить текущий предел или увеличить его?

Пример запроса

GET https://graph.microsoft.com/v1.0/users/:userId/drives

Пример ответа

HTTP/1.1 429 
Cache-Control: private
Transfer-Encoding: chunked
Content-Type: application/json
request-id: 377d2cdf-7be3-4286-819a-46060330365f
client-request-id: 377d2cdf-7be3-4286-819a-46060330365f
x-ms-ags-diagnostic: {"ServerInfo":{"DataCenter":"West Europe","Slice":"SliceA","Ring":"4","ScaleUnit":"000","Host":"AGSFE_IN_13","ADSiteName":"AMS"}}
Duration: 170.5668
Strict-Transport-Security: max-age=31536000
Date: Wed, 23 May 2018 11:39:08 GMT

{
  "error": {
    "code": "activityLimitReached",
    "message": "The request has been throttled",
    "innerError": {
      "request-id": "377d2cdf-7be3-4286-819a-46060330365f",
      "date": "2018-05-23T11:39:09"
    }
  }
}

Ответы [ 2 ]

0 голосов
/ 15 сентября 2018

У меня нет большого опыта работы с onedrive-api, но я определенно испытал удушение при использовании onenote-api.

Этот пост о том, как дроссели с onenote может быть более полезным, чем ссылка на общий график Microsoft в вашем вопросе.
В частности, длинные вызовы для API приведут к удушению, происходящему намного раньше, чем к более целевым вызовам (и вы должны позволить вызовам завершить работу перед отправкой новых вызовов, будьте очень осторожны с несколькими очередями запросы на скручивание).

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

Я предполагаю (но не уверен), что все вызовы microsoftgraph-api внутренне будут учитываться при ограничении ресурсов, но если вы перенаправляете вызовы onedrive против onedrive-api, это не будет учитываться при ограничениях microsoft-графа и может разрешать запросы, которые вам нужны без дросселирования.
Я бы определенно рекомендовал получить второй токен доступа для API прямого включения (вы можете использовать тот же токен обновления) и попробовать этот подход.

GET https://www.onedrive.com/v1.0/users/:userId/drives

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

0 голосов
/ 08 сентября 2018

Что мы можем сделать, чтобы избежать ошибки 429? Как мы можем проверить текущий предел или увеличить его?

Чтобы избежать ошибки 429, мы должны контролировать наш запрос, не делать слишком много запросов в течение ограниченного времени. Проблема с лимитом - это известная проблема, которую мы не можем увеличить сейчас.

Установка и публикация точных ограничений регулирования звучит очень просто, но на самом деле это не лучший способ. Мы постоянно отслеживаем использование ресурсов в SharePoint Online. В зависимости от использования мы настраиваем пороговые значения, чтобы пользователи могли использовать максимальное количество ресурсов, не снижая надежность и производительность SharePoint Online.

Выше приведена ссылка на документацию MS о регулировании и OneDrive для бизнеса / SharePoint: https://docs.microsoft.com/en-us/sharepoint/dev/general-development/how-to-avoid-getting-throttled-or-blocked-in-sharepoint-online

Я бы предложил перейти к UserVoice для графика и предложить улучшение (или повысить уже существующее). Обратная связь помогает Группе продуктов расставлять приоритеты в будущей работе, основываясь на интересе к предлагаемым улучшениям. Но, основываясь на приведенных выше официальных документах, лучшее решение по-прежнему состоит в том, чтобы контролировать наш запрос, а не запрос функции .

...