Rails支持来自w / in action controller的流式文本更新:
render :text => proc { |response, output|
10_000_000.times do |i|
output.write("This is line #{i}\n")
end
}
同样,可以使用http状态代码呈现文本:
render :text => ":(", :status => 400
我想知道,如果在1000万次写入中我们遇到错误,是否可以使用状态代码关闭流?
感谢您的时间!
答案 0 :(得分:1)
您可以通过捕获错误并中断proc来关闭流。然后,您可以传递错误消息或只是关闭您的流。例如:
render :text => proc { |response, output|
10_000_000.times do |i|
begin
output.write("This is line #{i}\n")
raise StandardError, "reached line 100!" if i == 100
rescue Exception => e
response.status = 400
output.write(e.message)
break
end
end
}