Ruby 超时后结束WEBrick服务器进程的正确方法是什么?

Ruby 超时后结束WEBrick服务器进程的正确方法是什么?,ruby,webrick,Ruby,Webrick,我正在尝试实现一个小的WEBrick服务器,当x秒后没有请求时,它会自动结束。然而,我却一事无成。我第一次尝试在2秒后退出失败。下面是简单的代码 那不行 server = WEBrick::HTTPServer.new(:Port => 8000) WEBrick::Utils::TimeoutHandler.register(2, Timeout::Error) server.start 我认为这将在2秒后退出进程。以下是实际发生的情况: [2020-01-19 15:41:10] I

我正在尝试实现一个小的WEBrick服务器,当x秒后没有请求时,它会自动结束。然而,我却一事无成。我第一次尝试在2秒后退出失败。下面是简单的代码 那不行

server = WEBrick::HTTPServer.new(:Port => 8000)
WEBrick::Utils::TimeoutHandler.register(2, Timeout::Error)
server.start
我认为这将在2秒后退出进程。以下是实际发生的情况:

[2020-01-19 15:41:10] INFO  WEBrick 1.4.2
[2020-01-19 15:41:10] INFO  ruby 2.5.1 (2018-03-29) [x86_64-linux-gnu]
[2020-01-19 15:41:10] INFO  WEBrick::HTTPServer#start: pid=16622 port=8000
[2020-01-19 15:41:12] ERROR Timeout::Error: execution timeout
    /usr/lib/ruby/2.5.0/webrick/server.rb:170:in `select'
然后进程继续运行。我必须按住ctrl-c键才能结束它


超时后关闭服务器并结束进程的正确方法是什么?

为什么还要麻烦webrick?使用它的唯一原因是它曾经是唯一一个需要零安装的服务器。既然你可以把美洲狮、独角兽或瘦子塞进你的gemfile和rock'n'roll中,那么没有理由使用webrick,这充其量只是一个小的实验项目,可以与其他人分享。我不会告诉人们,为了运行几行实验性代码,他们必须安装一个大框架。我不会这么做的。如果我能解决超时问题,WEBrick会很好地满足我的需求。“安装一个大框架”。嗯,您只需运行
gem安装puma
。这不起作用,因为超时处理程序是用来超时慢速请求的。不会在x秒后杀死服务器。”那么如何在x秒后杀死服务器呢?