推文应该在后台完成吗?

时间:2011-10-06 09:06:33

标签: twitter ruby-on-rails-3.1 delayed-job background-process resque

在一个高Twitter应用程序网站上。应用程序通过用户oauth凭据发送推文的位置。是否应该通过后台工作人员(Resque,Delayed Job等)在后台发送推文?或者Web进程应该处理它吗?

1 个答案:

答案 0 :(得分:1)

这实际上取决于您的使用案例。 Twitter本身我认为向API发送一个AJAX请求。如果它在您的界面中有意义,您可以这样做,但它确实意味着您正在使用Web进程来执行此操作。其中一个好处是,您可以在将resopnse返回给用户之前验证请求是否成功。这比在后台排队某些内容,它失败,并且您想要提醒用户(例如通过“实时”基于ajax / socket的消息系统或另一个请求的闪存通知)的情况要容易得多。

如果您不担心显示推文(例如您的应用程序是作为更大动作的一部分发送),那么在后台执行它绝对是可行的方法。

Resque非常棒且作业非常轻巧,因此您可以快速集成以在后台快速处理这些作业。

# app/jobs/send_tweet.rb
class SendTweet
  @queue = :tweets

  def self.perform(user_id, content)
    user = User.find(user_id)
    # send Tweet
  end
end

# app/controllers/tweet_controller.rb
def create
  # assuming some things here, like validation and a `current_user` method
  Resque.enqueue(SendTweet, current_user.id, params[:tweet][:message])
  redirect_to :index
end
相关问题