"reasonable"使用 Web API 同步数据



我的目标是将web应用程序与内部数据库同步。web应用程序有一个公共的API,但为了完全同步这两个源,我每次需要进行大约2000次单独的API调用。我的直觉告诉我,这是过分的,可能是不负责任的,但我缺乏确定的经验。

在这种特殊情况下,web应用程序是Asana,但我以前在其他服务中遇到过类似的情况。有没有办法知道你是否通过过多的API调用滥用服务?我知道我不会去监督像Asana这样的公司,但我无法摆脱这样一种感觉,那就是肯定有比每天发出15万个请求更好的方法。

我唯一能想到的另一个选择是,只有当我知道数据库发生了变化时,才更新web服务,但这样我会失去很多功能。

我为这个问题的主观性道歉,但我真的希望有人能解释一下在使用公共API时是否有任何礼仪。

(我在Asana工作)

这是一个很好的问题,或者更确切地说是一组问题。

您正在设计一个系统,该系统将重复对每个对象发出请求。随着对象数量的增长会发生什么?即使您的初始请求率是合理的,这也会遇到可扩展性问题。更具可扩展性的解决方案是随着系统中更改的数量而扩展的解决方案。这也会随着时间的推移而增长,但速度要慢得多——单个用户每天可以进行的更改数量相对恒定,但他们创建的对象总数会随着时间推移而增长。因此,我的第一条建议是避免以这种方式做事,而是找到一种方法来检测变化并采取行动。很有意思的是,知道为什么你觉得采取这种方法会失去能力。

现在,我碰巧知道Asana API目前并没有为您提供任何友好的机制来检测系统中的更改。这是一个普遍要求的功能,我们正在调查,但不幸的是,我无法承诺交付日期。所以你现在可能别无选择,只能对我们的系统进行民意调查。

至于对API的礼貌,许多服务提供商对其API的使用设置了限制,以防止意外或恶意使用API对其他客户的服务造成影响——Asana也不例外。有时公布这些限制,有时不公布,而且没有标准限制:这完全取决于服务。但是,您对服务限制感到好奇,这是非常周到的。

也就是说,对于Asana API来说,每天15万次请求算是太多了。如果我们所有的API用户都给了我们那么多的流量,我们每天可能会提供比谷歌网络搜索更多的请求,而且我们还没有那么大的可扩展性。:)从技术上讲,有时,我们可能会处理单个用户在该卷上的请求。

如果必须进行轮询,请尝试每隔15分钟进行轮询。但请不要在这段时间内对您的整个工作空间进行轮询;可能是流量/数据太多。我们正在努力为您提供更好的解决方案。

如果您确实对Asana API发出了太多请求,您将返回HTTP状态代码429,而不是您想要的响应;你可以在这里阅读更多(https://asana.com/developers/documentation/getting-started/errors)。

最新更新