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