Как правильно завершить процесс сервера WEBrick после тайм-аута? - PullRequest
0 голосов
/ 19 января 2020

Я пытаюсь реализовать небольшой сервер 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, чтобы завершить его.

Как правильно завершить работу сервера и завершить процесс после истечения времени ожидания?

...