【发布时间】:2014-01-10 08:40:09
【问题描述】:
我写了一个Diffbot API。它有 10,000 个调用和每秒 1 个调用。超过限制时我该怎么办?
【问题讨论】:
我写了一个Diffbot API。它有 10,000 个调用和每秒 1 个调用。超过限制时我该怎么办?
【问题讨论】:
您应该确保每秒只发出一次请求。对于面向前端的用户应用程序,您可能希望对请求进行排队,以免达到 1 次调用/秒的限制。
当达到每月 10,000 次调用的限制时,您应该考虑为 API 使用付费 Diffbot。 250,000 次通话的入门级定价计划是 299 美元,这是相当高的。如果您只计划每月拨打少于 250,000 次电话,您可能只想注册另一个免费的开发者令牌。
【讨论】:
当您说您“编写了一个 API”时,这是否意味着您编写了一个 Python 库来访问它?如果是这样,当超出限制时,Diffbot API 将返回 429 错误,告诉您您已超出配额,根据 errors。
一旦发生这种情况,您将有多种选择,具体取决于您的需求。
【讨论】:
还有一些事情可以做。但是,这取决于您是否要继续使用它来确保您的应用程序的结果,并且只是希望找到一种最佳方式或您想要停止(避免提出任何进一步的请求)。
您可以在每个特定号码后拨打account API。调用次数并检查消耗的积分是否超过阈值,然后限制任何进一步的调用。这可以通过一个标志变量来实现,当超出限制时您可以翻转其值,这样就不会进一步调用。
您还可以从父令牌中创建子令牌 here 然后对该令牌设置一些计算限制。后 也就是说,一旦超出限制,您可以决定是否要 通过再次更改令牌继续进行更多呼叫,否则它将 无论如何,限制任何进一步的调用。
要实现这一点,您需要从外部来源获取令牌 在代码中然后调用一个可以替换其值的小作业 超过了第一个时间限制。所以下次API调用的时候 对 Diffbot 进行,令牌值将被更改,您将保留 得到响应。
另一种提前采取行动的技术是运行 cron 每天或每周的作业/天蓝色功能,可以使用发布消息 一个关于当前账单周期消耗的信用的网络钩子,所以 我们知道状态。
这是我长期以来一直在做的事情 这样我就可以及时采取必要的措施。
【讨论】: