我有一个端点,它消耗POST请求,记录请求中的相关信息,然后以200 OK响应。它快速响应非常重要,处理日志条目可能需要一些时间,所以我想知道我是否可以改变这个:
def my_endpoint
generate_log_entry
render nothing: true
end
到此:
def my_endpoint
render nothing: true
generate_log_entry
end
我非常确定我不能 - 我认为对render
的调用只会构建响应,以便稍后在Rack中间件生命周期中提供服务。是否将日志记录委派给异步进程是唯一的选择?
答案 0 :(得分:1)
您有此选项,操作将在呈现视图后执行,但在发送响应之前执行。因此响应时间将受到影响。
class YourController < ApplicationController
after_action :generate_log_entry, only: :my_endpoint
#your stuffs
end
因此,我认为将日志记录委派给异步进程会更好,您可以使用sucker_punch
之类的库。