客户端在 Ruby 上 Rails 取消对后端的请求后会发生什么?

What happens after a request to backend is cancelled by the client on Ruby on Rails?

我想知道 ruby 对 rails 请求的工作原理。如果我在 Rails 上对 Ruby 上的控制器的操作发出 XHR 请求,但在它完成之前我重新加载页面,会发生什么情况,是操作被取消还是操作执行所有方法,尽管客户端没有收到响应? 我想知道,因为根据我的方法,我正在创建一个到另一台服务器的 tcp 连接到 运行 一些脚本,但是在方法完成之前我必须手动关闭该连接,所以我检测到一些 tcp 连接保持打开状态,我认为这是因为有时请求在完成之前被取消,并且关闭 tcp 连接的方法部分不是 beign 运行.

如果您的客户端提交了请求,并且 rails 开始处理该请求,那么即使客户端断开连接并且不等待响应,它也会继续。在 rails 控制器中,您不会看到任何错误或任何表明客户端已断开连接的信息。

此外,如果您正在进行 HTTP 调用并且不关心响应,我建议使用某种异步队列来发出这些请求(例如 sidekiq)。这样,如果您开始关心响应,您实际上可以建立一些监控。