我在 Heroku 上有一个小型 Rails 应用程序,它可以拉入我客户的最新推文以显示在所有页面上。它已经达到了 Twitter 的速率限制。我正在尝试提出解决方案。以下是一个明智的方法......
使用一个 cron gem,比如每当每分钟拉下最新的推文并将其写入文件,然后让页面从该文件中拉出推文,而不是直接从 Twitter 中拉出。
是的,这是一种可能性。或者您可以使用缓存来存储推文,例如使用 Memcached。这也将使您的应用程序更快。
我不熟悉 twitter 上的特定速率限制,但如果它们以请求/分钟表示,那么 cron 作业可能会起作用。无论您做什么,都需要停止让传入流量驱动您的请求。通常,您会创建一个队列并让一个工作人员从中拉取请求。那个工人会自己处理限速,这样你就不会过去了。
API 速率限制是必要的邪恶。也许你可以制作一个宝石来帮助其他人轻松扼杀自己。
我最终使用 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