Microsoft Graph节流Excel更新

问题描述:

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

很多时候,我得到一个429状态码,在error documentation中描述为“太多请求”。

有时返回的信息是:

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

其他时候,它返回:

“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。它们都是文本值。我想知道这是否会影响节流。我还没有找到任何有关使用“较小”操作集的指导。

没有看到您的代码,很难确切地知道发生了什么。这就是说,你在这里的范围是巨大的,几乎肯定会导致问题。

documentation

大范围意味着大小对于一个API调用过大的范围。诸如单元格数量,值,数字格式以及范围中包含的公式等因素可能会使响应变得非常大以至于不适合API交互。 API尽最大努力返回或写入所请求的数据。但是,由于资源利用率较高,涉及的大规模可能会导致API错误情况。

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

+0

谢谢Marc。即使我的请求很小,要更改1个单元格,我仍然收到相同的消息,并且我还没有在12个小时内打过服务器。在图形资源管理器中,我为https://graph.microsoft.com/v1.0/me/drive/root:/MyFile执行修补程序。XLSX:/工作簿/工作表/ MySheetName /范围(地址= 'A2:A2')用下面的JSON体 “{ ”值“:[ [ ”12“ ] ] }”,它返回“TooManyRequests “在状态码429中。 – PaulPerry

+0

当我尝试一次更新一个单元格时,仍然会得到429状态码。即使这是扼杀。有一些透明度会很好,理解系统为什么这样做。 – PaulPerry

+0

此外,即使它们都以状态码429响应,“服务器仍忙,请稍后再试。”似乎不应该将它与429状态代码捆绑在一起进行调节。如果信息是可信的,那么这个系统非常繁忙。 – PaulPerry