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