我写了一个Diffbot API。它有 10,000 个调用和每秒 1 个调用。超过限制时我该怎么办?
3 回答
当您说您“编写了一个 API”时,这是否意味着您编写了一个 Python 库来访问它?如果是这样,当超出限制时,Diffbot API 将返回 429 错误,告诉您您已超出配额,根据错误。
一旦发生这种情况,您将有多种选择,具体取决于您的需求。
- 如果您注册了多个免费试用令牌,请让您的 Python 脚本在初始化时使用它们的列表。一旦达到限制并检测到错误 429,请确保您的脚本丢弃它在该点之前使用的令牌,并移至下一个。显然,这类似于游戏系统,我建议不要这样做。
- 记录错误并让最终用户知道
- 开始为使用付费。如果您真的每 7 天抓取超过 1 万个站点,您应该考虑通过购买商业令牌来为实现这一目标的服务做出贡献。
您应该确保每秒只发出一次请求。对于面向前端的用户应用程序,您可能希望对请求进行排队,以免达到 1 次调用/秒的限制。
当达到每月 10,000 次调用的限制时,您应该考虑为 API 使用付费 Diffbot。250,000 次通话的入门级定价计划是 299 美元,这是相当高的。如果您只计划每月拨打少于 250,000 次电话,您可能只想注册另一个免费的开发者令牌。
可以做的事情很少。但是,这取决于您是要继续使用它以确保您的应用程序的结果,并且只是希望找到一种最佳的方法,还是您想停止(避免提出任何进一步的请求)。
您可以在每个确定编号后调用帐户 API 。调用次数并检查消耗的积分是否已超过阈值,然后限制任何进一步的调用。这可以通过一个标志变量来实现,当超出限制时您可以翻转其值,这样就不会进一步调用。
您还可以从 此处从父代币创建子代币,然后对该代币设置一些计算限制。之后,一旦超出限制,您可以通过再次更改令牌来决定是否要继续进行更多呼叫,否则无论如何它都会限制任何进一步的呼叫。
要实现这一点,您需要从代码中的外部源获取令牌,然后调用一个可以在超过第一次时间限制时替换其值的小作业。因此,下次对 Diffbot 进行 API 调用时,令牌值将被更改,并且您将不断收到响应。
另一种提前采取行动的技术是每天或每周运行 cron 作业/azure 函数,它可以使用 webhook 发布有关当前账单周期消耗的信用的消息,以便我们了解状态。
这是我长期以来一直在为我的用例做的事情,这样我就可以及时采取必要的步骤。