在OneDrive中节流

Iva*_*van 5 onedrive microsoft-graph

我们有一个注册的AAD申请,标记为多租户.我们正在使用此App ID为Microsoft Graph生成令牌.

  • 第一个用户是租户中的全局管理员,其中注册了应用程序.
  • 第二个用户是另一个租户的一部分.

当第二个用户尝试使用Microsoft Graph从OneDrive获取信息时,我们有时会收到HTTP 429 activityLimitReached错误.

我们阅读了关于限制的指南,它说Retry-After在响应头的值之后重复请求.但在我们的案例Retry-After中,答案中没有字段.

我们通过每天执行一个请求收到此错误.此外,在收到之后429,我们可以重试并获得成功的结果(经过多次尝试).此错误仅出现在OneDrive中,其他服务都可以.

我们可以做些什么来避免429错误?我们如何检查当前限制或增加它?

请求示例

GET https://graph.microsoft.com/v1.0/users/:userId/drives
Run Code Online (Sandbox Code Playgroud)

响应示例

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"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

Sei*_* Su 1

我们该如何避免 429 错误?我们如何检查当前限制或增加它?

为了避免429错误,我们必须控制我们的请求,不要在有限的时间内发出太多的请求。限制问题是已知问题,我们现在无法增加它。

设置和发布精确的限制听起来很简单,但事实上,这并不是最好的方法。我们持续监控 SharePoint Online 上的资源使用情况。根据使用情况,我们微调阈值,以便用户可以消耗最大数量的资源,而不会降低 SharePoint Online 的可靠性和性能。

以上参考来自有关限制和 OneDrive for Business/SharePoint 的 MS 文档:https://learn.microsoft.com/en-us/sharepoint/dev/general-development/how-to-avoid-getting-throttled-or-blocked -in-sharepoint-在线

我建议前往UserVoice for Graph并提出改进建议(或对现有改进进行投票)。反馈有助于产品组根据对这些建议的改进的兴趣确定未来工作的优先顺序。但根据上述官方文档,最好的解决方案仍然是控制我们的请求而不是功能请求