我在Rails中将响应发送回客户端之后尝试运行操作。是否可以在没有后台工作者或创建新线程的情况下执行此操作?
我查看了after_filter回调,但看起来这只能让你在渲染视图/响应之前执行代码。
由于
答案 0 :(得分:2)
简短回答:不,这是不可能的。您必须使用线程或某种延迟的工作框架(Sidekiq,Resque等)。
答案很长:您实际上可以使用ActionController :: Live来控制将响应“刷新”到客户端的时刻。
来自docs的修改示例:
class MyController < ActionController::Base
include ActionController::Live
def stream
begin
response.headers['Content-Type'] = 'text/event-stream'
100.times {
response.stream.write "hello world\n"
sleep 1
}
ensure
response.stream.close
end
do_my_after_response_job
end
end