Rails创建记录的后台工作?

时间:2016-03-27 01:24:48

标签: ruby-on-rails ruby-on-rails-4 backgroundworker background-process resque

目前在Rails 4上使用Resque。

我的问题是,使用后台作业创建记录是否有意义?有点像...

def create 
  @article = Article.new(articles_params)
  if @article.valid?
      background_job_here
  else
      render 'new'
  end
end

我能在这件事上找到的唯一其他文件说这样做是没有意义的,但是,并没有解释原因。

阅读Heroku文档,他们建议将超过500毫秒的任何请求移到后台。在我的网站上创建文章也不例外,因为它可能需要超过1,000毫秒。如果不是后台工作,我应该如何设计这个? THX!

1 个答案:

答案 0 :(得分:2)

在我看来,我不会将后台工作用于任何用户期望回复的工作。我认为这会扰乱请求/响应周期。例如,在您的情况下,用户期望对创建其文章的请求做出响应。 但是,只要响应不是必需的,就可以在后台作业中创建记录。例如,我确实有后台作业用于创建用户未请求的其他记录,但用于分析用户操作。 现在,创建文章需要500毫秒到1000毫秒才是一个问题。这是一个性能问题,后台工作无论如何都没有真正解决。我不知道您的应用程序的具体内容,但您可能希望查看缓存数据库(例如,使用redis)。