Smartsheet API速率限制超过

时间:2018-02-14 14:08:36

标签: smartsheet-api

上周在我们的夜间批处理中第一次遇到速率限制超过错误(4003)。此批处理过程是将Smartsheet对象与我们的TimeTracking应用程序4TT同步。

自2016年以来,这个过程工作正常,但现在不知怎的,这个速率限制错误发生,因此停止同步。在API(以及有关速率限制的博客)的帮助下,我设法更改了代码,在发生此错误时暂停。这花了我很多时间,因为每次在同步过程的不同部分发生错误。

当速率限制即将超过而不是每次都更改代码时,是否存在或者是否有办法让API自动暂停。对于那些不想要这个功能的人,例如添加一个可选的布尔参数' AutomaticallyPauseWhenRateLimitExceeds' (默认为false)与Smartsheet API建立连接时?

3 个答案:

答案 0 :(得分:0)

您需要在代码中包含逻辑以有效处理速率限制错误 - Smartsheet API无法为您自动处理此情况。

一种简单的方法是在代码中包含逻辑,这样当引发速率限制错误时,代码会在继续执行前暂停执行60秒。或者,更复杂的方法是在代码中实现exponential backoff逻辑(一种错误处理策略,您可以定期重试失败的请求,重试之间的等待时间逐渐延长,直到请求成功或一定次数的重试尝试达成了。)

如果您的代码以有效的方式构建(即,错误处理逻辑封装在一个位置),那么实现这种类型的错误处理逻辑应该不困难或乏味。

其他说明Smartsheet API Best Practices博文(特别是实用:遵守速率限制指南部分)包含有关此主题的信息。

答案 1 :(得分:0)

我们所有的SDK都包含错误重试。所以这是处理这种情况的最简单方法。 http://smartsheet-platform.github.io/api-docs/#sdks-and-sample-code

答案 2 :(得分:0)

在更新工作表时,我发现了这个问题和其他有趣的问题(在我的实验室中),包括不良的Internet连接/带宽问题。

如果无法容纳您的代码来处理数据块,我的建议是使用简单的Try / Catch逻辑将线程/任务暂停60秒,然后重试。

using System.Threading
...
... //all your code goes here
...
try
{
   // your code to Save/update the Sheet goes here
}
   catch (Exception ex)
{
   Console.WriteLine(ex.Message);
   Thread.Sleep(60000);
}

下一步是在发生这些错误时进行通知