Microsoft graph api 批处理端点中的节流行为

Microsoft graph api 批处理端点中的节流行为,microsoft-graph-api,Microsoft Graph Api,我目前正在测试我的应用程序。我对Graph API的一些请求使用批处理端点 我从文档中了解到,目前outlook enpoint的限制是每10分钟每个应用程序每个用户发出10K请求 为了生成节流方案,我确实向以下对象发送了太多请求: ->正如预期的那样,outlook资源上的所有进一步操作都被阻止了get calendar、get contacs、 但当我发送批处理请求时,所有对outlook端点的请求都已成功执行 请求示例: POST https://graph.microsoft.com/v

我目前正在测试我的应用程序。我对Graph API的一些请求使用批处理端点

我从文档中了解到,目前outlook enpoint的限制是每10分钟每个应用程序每个用户发出10K请求

为了生成节流方案,我确实向以下对象发送了太多请求:

->正如预期的那样,outlook资源上的所有进一步操作都被阻止了get calendar、get contacs、

但当我发送批处理请求时,所有对outlook端点的请求都已成功执行

请求示例:

POST https://graph.microsoft.com/v1.0/$batch
{
  "requests": [
    {
      "id": "1",
      "method": "GET",
      "url": "/users/{a_userId}/contacts/{a_contactId}/"
    }
    // ... some more request items
  ]
}
我在两次测试中使用了相同的用户和应用程序。 对于批处理enpoint,似乎存在不同的节流行为

文档没有为批处理请求指定任何/不同的行为。 所以我的问题是,节流在这一点上会有什么表现?限制尤其重要

例如,如果我通过批处理向outlook端点发送了太多请求,那么是否只会限制对outlook端点的请求,还是会限制整个批处理端点每个批处理请求项对任何资源的限制,即使它是对其他资源(例如onedrive)的请求

编辑:

我这里的问题是,我在直接访问资源时受到限制 但是在批处理端点上执行相同的请求确实有效

由于缺少有关批处理enpoint上节流的文档,我假设无论以何种方式访问,每个资源的节流只计算一次。但我只是在直接访问资源时被限制了。因此,我不确定Batch enpoint的Exact节流行为

节流是否单独计算,取决于我在哪个enpoint上执行请求? 例如,对于Exchange资源,这样假设是否正确: 直接请求限制10k/10min 加上批量要求的10k/10min
产生理论上可能的20k/10min请求

10k/10分钟限制特定于Exchange资源邮箱、组等。。。。不幸的是,我们并没有在其他产品(如OneDrive/Sharepoint)上达成共识,所以它们目前有自己的节流限制。我们的比较好:P j/k

因此,为了回答您的问题,Exchange资源与其他工作负载是分开节流的。如果限制您访问Exchange邮箱,则不会自动限制OneDrive请求。但这实际上是有道理的。即使在交换中,节流也是a的函数
AppId+目标邮箱。因此,如果您访问邮箱A并受到限制,则即使使用相同的应用程序,也不会限制您访问邮箱B。因此,您可以将OneDrive视为另一个目标。

谢谢您的回答,这样整个批处理端点就永远不会被限制了?只有通过批处理访问某些资源才会失败?我仍然不清楚的是,批处理端点的节流是否单独计算?我编辑了我的问题,为了更准确地传递我的问题,当您发出批处理请求时,Microsoft Graph会为您处理端点限制。如果请求返回限制错误,它将尝试重试该请求。@Marclafler,但在我的情况下,对Exchange资源的所有请求都不应该失败,因为我已经对该资源进行了限制?批处理请求没有以任何方式延迟,它们确实包含我请求的数据。我觉得奇怪的是,我在直接访问资源时被限制了,但同时没有通过批处理端点。感谢您的报告。让我和我们的节流大师谈谈,看看他说了些什么。
POST https://graph.microsoft.com/v1.0/$batch
{
  "requests": [
    {
      "id": "1",
      "method": "GET",
      "url": "/users/{a_userId}/contacts/{a_contactId}/"
    }
    // ... some more request items
  ]
}