我有一个第三方API服务,我通过我的Rails应用程序与之交互,它们的每日限制非常低。想知道追踪API调用的最佳方式是什么?
- 数据库
- Redis
- 在内存中
- 其他
我有一个进行所有调用的服务对象。只需要一个好的方法来跟踪每一个电话,而不是超过每日限额。
这是为以后偶然发现这一点的人准备的。
所以我设法找到了适合这个的东西。
基本上,我使用RailsCache并使用raw: true
集设置一个密钥。
Rails.cache.fetch("unique_key", raw: true, expires_at: expiry_time)
这使我可以在向外部服务发送请求时增加该值。
Rails.cache.increment("unique_key")
我还将每日最大通话次数设置为恒定
MAX_DAILY_API_CALLS = 2000
如果达到限制,则使用自定义错误类来引发错误
class TooManyApiCallsToday < StandardError
def message
Rails.logger.info "MINDBODY: There is a daily limit of #{MAX_DAILY_API_CALLS} and it has been reached. It will reset at midnight."
end
end
raise TooManyApiCallsToday if @api_calls >= MAX_DAILY_API_CALLS
希望能有所帮助。