Twitter 推特应该在后台进行吗?

Twitter 推特应该在后台进行吗?,twitter,ruby-on-rails-3.1,delayed-job,background-process,resque,Twitter,Ruby On Rails 3.1,Delayed Job,Background Process,Resque,在一个高推特应用网站上。应用程序通过用户oauth凭据发送推文。tweet是否应该通过后台工作人员在后台发送(Resque、延迟作业等)?或者web进程应该处理它吗?这实际上取决于您的用例。我认为Twitter本身向API发送了一个AJAX请求。如果在界面中有意义,您也可以这样做,但这确实意味着您正在使用一个web进程来实现这一点。这样做的好处之一是,您可以在向用户返回回复之前验证请求是否成功。这比在后台排队、失败并希望提醒用户(例如,通过基于“实时”ajax/socket的消息系统或其他请求的

在一个高推特应用网站上。应用程序通过用户oauth凭据发送推文。tweet是否应该通过后台工作人员在后台发送(Resque、延迟作业等)?或者web进程应该处理它吗?

这实际上取决于您的用例。我认为Twitter本身向API发送了一个AJAX请求。如果在界面中有意义,您也可以这样做,但这确实意味着您正在使用一个web进程来实现这一点。这样做的好处之一是,您可以在向用户返回回复之前验证请求是否成功。这比在后台排队、失败并希望提醒用户(例如,通过基于“实时”ajax/socket的消息系统或其他请求的flash通知)的场景要容易得多

如果您不担心显示tweet(例如,您的应用程序正在作为一个更大的操作的一部分发送),那么在后台执行肯定是一个不错的选择

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