Я пытаюсь реализовать небольшой сервер 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, чтобы завершить его.
Как правильно завершить работу сервера и завершить процесс после истечения времени ожидания?