我有兴趣想出一个更好的方法来限制我对外部供应商的API调用。
例如,假设我每小时可以拨打100个电话。我正在创建一个供内部使用的实用程序。我有一个执行API调用的rake任务,我的应用程序本身允许用户进行api调用等。关键是一个帐户可能在我的应用程序的多个区域进行API调用,尽管我可以访问这些区域中的每一个
所以,我不能在我的佣金任务中说“做api电话,睡60秒”。如果有人使用该应用程序并且当时已经拨打了100个api电话怎么办?
有没有办法在全球范围内设置一些内容来轻松跟踪这些来电?
答案 0 :(得分:0)
Rack throttle跟踪调用次数,并为您提供了几个限制访问应用程序的选项。
如果这还不够,您可以使用快速键/值存储(例如Redis)自行增加计数器。您可以维护两个不同的密钥DAILY_LIMIT
和HOURLY_LIMIT
。只要每天/每小时重置它们,就可以减少为每个请求计算任何内容的需要。