Rails 创建记录的后台作业?
Rails Background Job for Creating Records?
目前 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 毫秒。如果不是后台工作,我应该如何设计它?谢谢!
以我的拙见,我不会将后台作业用于用户期望响应的任何内容。我认为这会扰乱 request/response 循环。例如,在您的情况下,用户期望对创建他的文章的请求做出响应。
但是,只要响应不是强制性的,在后台作业中创建记录就完全没问题。例如,我确实有后台作业来创建用户未请求但用于分析用户操作的其他记录。
现在,创建一篇文章需要 500ms 到 1000ms 绝对是个问题。这是一个后台作业并没有真正解决的性能问题。我不知道你的应用程序的细节是什么,但你可能想研究缓存你的数据库(例如使用 redis)。
目前 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 毫秒。如果不是后台工作,我应该如何设计它?谢谢!
以我的拙见,我不会将后台作业用于用户期望响应的任何内容。我认为这会扰乱 request/response 循环。例如,在您的情况下,用户期望对创建他的文章的请求做出响应。 但是,只要响应不是强制性的,在后台作业中创建记录就完全没问题。例如,我确实有后台作业来创建用户未请求但用于分析用户操作的其他记录。 现在,创建一篇文章需要 500ms 到 1000ms 绝对是个问题。这是一个后台作业并没有真正解决的性能问题。我不知道你的应用程序的细节是什么,但你可能想研究缓存你的数据库(例如使用 redis)。