2

我正在尝试进行一些激烈的优化。我知道延迟工作。但我什至不想在发送响应之前花时间创建延迟作业。我想回复用户,然后担心在发送响应后创建延迟作业。

有没有一些宝石可以做这样的事情?

4

2 回答 2

2

如果它是轻量级的,你可以创建一个线程:

def show
  @record = Record.find(params[:id])
  Thread.new do
    Rails.logger.info "#{Time.now}"
    sleep 10
    Rails.logger.info "#{Time.now}"
  end
end

我的日志输出与上述(响应立即呈现)

Started GET "/" for 127.0.0.1 at 2012-04-17 14:15:29 -0500
Processing by HomeController#public as HTML
2012-04-17 14:15:29 -0500
  Rendered home/public.html.haml within layouts/application (0.4ms)
  Rendered layouts/_navbar.html.haml (8.9ms)
  Rendered layouts/_flash.html.haml (0.1ms)
  Rendered layouts/_footer.html.haml (0.1ms)
Completed 200 OK in 210ms (Views: 202.3ms | ActiveRecord: 0.0ms)
2012-04-17 14:15:39 -0500
于 2012-04-17T19:17:28.253 回答
0

延迟工作。在某些时候,您必须在发送响应后存储有关您想要执行的进程的一些信息,而这正是延迟作业的用途:存储有关要在后台运行的进程的信息。

任何其他 gem 基本上都会做同样的事情,即存储一些关于做什么的信息。延迟工作有什么问题?如果您对延迟工作有任何具体问题,最好解决它而不是使用任何其他未经证实的方法。

于 2012-04-17T18:37:51.067 回答