【问题标题】:Microsoft Graph throttling Excel updatesMicrosoft Graph 限制 Excel 更新
【发布时间】:2017-08-31 23:12:56
【问题描述】:

我正在开发一个连接到 Microsoft Graph API 的 Node.js 应用程序。

通常,我会返回一个429 状态代码,在error documentation 中将其描述为“请求过多”。

有时返回的消息是:

太多请求。客户端应用程序已被限制,不应尝试重复请求,直到经过一段时间。

其他时候,它会返回:

“TooManyRequests。服务器正忙。请稍后再试。”。

不幸的是,它没有在标头中返回 Retry-After 字段,尽管他们的 best practices 声称它应该这样做。

这完全是在开发中,我并没有过多地使用该服务,因为它一直在调试期间。我意识到微软经常改变它的工作方式。我只是发现很难围绕甚至不提供Retry-After 字段的服务开发应用程序,并且似乎有很多问题(我使用的是v1.0 端点)。

当我等待 5 分钟时(正如我所看到的那样),服务仍然出错。这是一个示例返回响应:

{
    "error": {
        "code": "TooManyRequests",
        "message": "The server is busy. Please try again later.",
        "innerError": {
            "request-id": "d963bb00-6bdf-4d6b-87f9-973ef00de211",
            "date": "2017-08-31T23:09:32"
        }
    }
}

这可能与正在执行的操作有关吗?

我正在更新A2:L3533 的范围。它们都是文本值。我想知道这是否会影响节流。我还没有找到有关使用“较小”操作集的任何指导。

【问题讨论】:

    标签: microsoft-graph-api


    【解决方案1】:

    如果没有看到您的代码,就很难准确诊断出发生了什么。也就是说,您在这里的范围是巨大的,几乎肯定会导致问题。

    来自documentation

    Large Range 意味着 Range 的大小对于单个 API 调用来说太大了。单元格数、值、numberFormat 和范围中包含的公式等许多因素都会使响应变得如此之大,以至于它变得不适合 API 交互。 API 会尽最大努力返回或写入请求的数据。但是,所涉及的大尺寸可能会由于资源利用率高而导致 API 错误情况。

    为避免这种情况,我们建议您以多个较小的范围大小读取或写入大范围。

    【讨论】:

    • 谢谢马克。即使我将请求变小,以更改 1 个单元格,我仍然收到相同的消息,而且我在 12 个多小时内没有访问服务器。在 Graph Explorer 中,我对 graph.microsoft.com/v1.0/me/drive/root:/MyFile.xlsx:/workbook/… 使用以下 JSON 正文 "{ "values": [ [ "12" ] ] }" 进行了修补,它在状态代码 429 中返回 " TooManyRequests"。
    • 当我尝试一次更新一个单元格时,我仍然得到 429 状态码。即便如此,它也受到了限制。最好有一些透明度,以了解系统为什么这样做。
    • 此外,即使它们都以状态代码 429 响应,但“服务器正忙。请稍后再试”的消息。它似乎不应该与 429 状态代码捆绑在一起以进行节流。如果消息是可信的,这个系统非常繁忙。
    • 这里好像发生了其他事情。它当然不应该在一次通话后节流。我建议在支持下开一张票,以便有人可以调查您的租户中发生的事情。 support.microsoft.com/en-us/contactus
    • 我会试一试。这甚至没有发生在代码中,而是来自 Graph Explorer。
    猜你喜欢
    • 1970-01-01
    • 2018-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-01
    • 1970-01-01
    相关资源
    最近更新 更多