Twitter速率限制和使用rails的Cron缓存

时间:2012-02-13 11:38:50

标签: ruby-on-rails ruby twitter cron whenever

我在Heroku上有一个小型rails应用程序,可以在我的客户端最新推文中显示所有页面。它已经达到Twitter的速度限制。我正试图想出一个解决方案。以下是一种明智的做法......

使用像Whenever这样的cron gem来每分钟下载最新的Tweet并将其写入文件,然后让页面从该文件中提取Tweet而不是直接从Twitter中提取。

3 个答案:

答案 0 :(得分:1)

是的,这是一种可能性。或者您可以使用caching来存储推文,例如使用Memcached。这也将使您的应用更快。

答案 1 :(得分:1)

我不熟悉twitter上的具体速率限制,但如果它们以请求/分钟表示,那么cron作业可能会起作用。无论你做什么,你都需要停止让传入的流量驱动你的请求。通常,您将创建一个队列,并让一个工作人员从中提取请求。那个工人会自己处理速率限制,所以你不要过去。

API速率限制是必要的恶魔。也许你可以制作一个宝石来帮助其他人轻松节约自己。

答案 2 :(得分:0)

我最终使用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