【问题标题】:Twitter Rate Limits and Cron caching with railsTwitter 速率限制和使用 rails 缓存的 Cron
【发布时间】:2012-02-21 06:52:43
【问题描述】:
我在 Heroku 上有一个小型 Rails 应用程序,它可以拉入我客户的最新推文以显示在所有页面上。它已经达到了 Twitter 的速率限制。我正在尝试提出解决方案。以下是明智的做法吗...
使用像 Whenever 这样的 cron gem 每分钟下载最新的推文并将其写入文件,然后让页面从该文件而不是直接从 Twitter 中拉取推文。
【问题讨论】:
标签:
ruby-on-rails
ruby
twitter
cron
whenever
【解决方案1】:
是的,这是一种可能性。或者您可以使用 caching 来存储推文,例如使用 Memcached。这也将使您的应用程序更快。
【解决方案2】:
我不熟悉 twitter 上的具体速率限制,但如果它们以请求/分钟表示,那么 cron 作业可能会起作用。无论您做什么,都需要停止让传入流量驱动您的请求。通常,您会创建一个队列并让一个工作人员从中拉取请求。该工作人员会自行处理速率限制,因此您不会超过。
API 速率限制是必不可少的。也许您可以制作一个宝石来帮助其他人轻松自我节制。
【解决方案3】:
我最终使用 memcache 来缓存请求:
latest_tweet = Rails.cache.read "latest_tweet"
if !latest_tweet
latest_tweet = Twitter.user_timeline("sometwitterusername").first.text
Rails.cache.write("latest_tweet", latest_tweet, :expires_in => 5.minutes)
end