使用 Rails 3.2.14。我正在流式传输控制器操作响应,如下所示。
def my_controller_action
stream = StreamingClass.new(*args) #responds to each
response.sending_file= true
headers.merge!(
'Content-Disposition' => 'inline',
'Content-Transfer-Encoding' => 'binary',
'Cache-Control' => 'no-cache'
)
self.status = 200
self.content_type= 'application/json'
self.response_body = stream
end
流式传输工作得很好,但问题是控制器操作在流式传输完成之前返回(即在“流”对象上调用每个之前)。它基本上在将“流”对象分配给 self.response_body 后立即返回。
我正在使用 lograge gem 来整理我们的日志记录。Lograge 基本上订阅了“process_action.action_controller”通知。它根据实际的控制器返回时间记录时间(即持续时间、db_runtime 等),而不跟踪花在流对象代码上的任何时间。
繁重的工作发生在 StreamingClass 方法中,但我完全错过了日志中的这些信息。有没有办法在日志中包含流响应时间?