简单且可扩展的方式来跟踪整个Rails应用程序中的API Throttle限制

时间:2014-02-24 15:28:00

标签: ruby-on-rails ruby api

我有兴趣想出一个更好的方法来限制我对外部供应商的API调用。

例如,假设我每小时可以拨打100个电话。我正在创建一个供内部使用的实用程序。我有一个执行API调用的rake任务,我的应用程序本身允许用户进行api调用等。关键是一个帐户可能在我的应用程序的多个区域进行API调用,尽管我可以访问这些区域中的每一个

所以,我不能在我的佣金任务中说“做api电话,睡60秒”。如果有人使用该应用程序并且当时已经拨打了100个api电话怎么办?

有没有办法在全球范围内设置一些内容来轻松跟踪这些来电?

1 个答案:

答案 0 :(得分:0)

Rack throttle跟踪调用次数,并为您提供了几个限制访问应用程序的选项。

如果这还不够,您可以使用快速键/值存储(例如Redis)自行增加计数器。您可以维护两个不同的密钥DAILY_LIMITHOURLY_LIMIT。只要每天/每小时重置它们,就可以减少为每个请求计算任何内容的需要。