我正在尝试进行一些激烈的优化。我知道延迟工作。但我什至不想在发送响应之前花时间创建延迟作业。我想回复用户,然后担心在发送响应后创建延迟作业。
有没有一些宝石可以做这样的事情?
我正在尝试进行一些激烈的优化。我知道延迟工作。但我什至不想在发送响应之前花时间创建延迟作业。我想回复用户,然后担心在发送响应后创建延迟作业。
有没有一些宝石可以做这样的事情?
如果它是轻量级的,你可以创建一个线程:
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
延迟工作。在某些时候,您必须在发送响应后存储有关您想要执行的进程的一些信息,而这正是延迟作业的用途:存储有关要在后台运行的进程的信息。
任何其他 gem 基本上都会做同样的事情,即存储一些关于做什么的信息。延迟工作有什么问题?如果您对延迟工作有任何具体问题,最好解决它而不是使用任何其他未经证实的方法。