我正在编写一个应用程序,有时需要进行非常长时间的数据库请求。如果客户端重新加载或关闭页面,我想执行一些代码以处理数据库请求。
我希望Rack会有钩子来处理这种情况,但据我所见,这比Rack更深入一层。
到目前为止,我唯一能找到的钩子是通过猴子补丁thin Connection类中的unbind函数来实现的。
我希望Rack会有钩子来处理这种情况,但据我所见,这比Rack更深入一层。
到目前为止,我唯一能找到的钩子是通过猴子补丁thin Connection类中的unbind函数来实现的。
module Thin
class Connection < EventMachine::Connection
def unbind
# DO something here
@request.async_close.succeed if @request.async_close
@response.body.fail if @response.body.respond_to?(:fail)
@backend.connection_finished(self)
end
end
end
这将重写Thin的解除绑定函数,并让我进入EventMachine调用的断开连接。
是否有更好的方法?
EventSource#close
)。 - Andrea Amantini