(我在 Asana 工作)
这是一个很好的问题,或者说是一组问题。
您正在设计一个系统,该系统将重复对每个对象发出请求。随着对象数量的增加会发生什么?即使您的初始请求率是合理的,这也会遇到可伸缩性问题。一种更具可扩展性的解决方案是随着系统中更改的数量而扩展的解决方案。这也会随着时间的推移而增长,但速度要慢得多 - 单个用户每天可以进行的更改数量相对恒定,但他们创建的对象总数会随着时间的推移而增长和增长。所以我的第一条建议是避免以这种方式做事,而是找到一种方法来检测变化并采取行动。知道为什么你觉得通过这种方法会失去能力会很有趣。
现在,我碰巧知道 Asana API 目前没有为您提供任何友好的机制来检测系统中的变化。这是一个普遍要求的功能,我们正在研究它,但遗憾的是我不能保证交货日期。因此,您可能别无选择,只能暂时轮询我们的系统。
至于对 API 的礼貌,许多服务提供商对其 API 的使用设置了限制,以防止意外或恶意使用 API 影响对其其他客户的服务——Asana 也不例外。有时会发布这些限制,有时不会发布,并且没有标准限制:这完全取决于服务。但是您对服务限制感到好奇是非常周到的。
也就是说,对于 Asana API 来说,每天 150k 的请求已经很多了。如果我们所有的 API 用户都为我们提供了这么多流量,那么我们每天服务的请求可能比 Google Web Search 还多,而且我们还没有那么大的可扩展性。:) 从技术上讲,有时,我们可能会处理来自单个用户的那个量的请求。
如果您必须轮询,请尝试每隔 15 分钟轮询一次。但请不要在这段时间内轮询您的整个工作区;这可能是太多的流量/数据。我们正在努力为您提供更好的解决方案。
如果您碰巧对 Asana API 发出了太多请求,您将返回 HTTP 状态代码 429 而不是您想要的响应;您可以在此处阅读更多相关信息(https://asana.com/developers/documentation/getting-started/errors)。