在Rails中检测HTTP连接关闭

Mat*_*age 5 connection ruby-on-rails http

当使用Nginx时,有时候当客户端提前关闭其连接时,错误日志中会记录HTTP 499(例如,连接超时,用户重新加载浏览器或按下Stop或其他).

我知道Nginx能够检测到这一点,因为它们是接收SIGPIPE信号的结束,表明套接字已经关闭,但我想知道是否有可能将此通知重新发送回Rails?

Shopify最近使用了一种非常新颖的方法在将请求发送到Rails进行处理之前在Unicorn中检测到这一点,但是我希望能够在Rails应用程序中检测到这一点,例如在长时间运行的事务中.

Ela*_*dar 2

Rails 的调度程序已经开始处理请求后 - 不再有与 http 客户端的连接,只有当处理完成时 - 响应才会返回到客户端。

所以基本上,您无法判断客户端(例如:浏览器)是否在您已经处理连接时关闭了连接。