【问题标题】:how to start and stop Ruby Thin server?如何启动和停止 Ruby Thin 服务器?
【发布时间】:2011-10-08 17:33:41
【问题描述】:

我需要多次以编程方式启动和停止瘦服务器。我正在使用以下代码:

require "thin"

def running?
  !TCPSocket.new('127.0.0.1', 3000).close
rescue Exception
  # not running
end

loop do
    server = Thin::Server.new('0.0.0.0', 3000, lambda {|env| [200, {}, ""]})
    thread = Thread.new {server.start}
    t = Time.now
    until running?
      sleep 0.1
    end
    puts "Started in #{Time.now - t}"

    server.stop!

    t = Time.now
    while running?
      sleep 0.1
    end
    puts "Stopped in #{Time.now - t}"
end

我希望 Thin::Server#running? 会在服务器不再运行时告诉我,但我错了,必须创建自己的#running?方法。

此外,它会在第一次大约 11-12 秒 (!?!?!) 后停止,第二次不会打印“Started” - 例如它不会第二次正确启动,但 Thin 会打印熟悉的线条,好像一切都会好起来的。这是我从这个脚本得到的输出:

Thin web server (v1.2.11 codename Bat-Shit Crazy)
Maximum connections set to 1024
Listening on 0.0.0.0:3000, CTRL+C to stop
Started in 0.002001
Stopping ...
Stopped in 11.441654
Thin web server (v1.2.11 codename Bat-Shit Crazy)
Maximum connections set to 1024
Listening on 0.0.0.0:3000, CTRL+C to stop

而且它只是无限期地阻塞。如何正确停止和启动服务器?

【问题讨论】:

    标签: ruby thin


    【解决方案1】:

    哈!看来我已经设法通过使用 EventMachine 1.0.0.beta 4.1 解决了这个问题 :)

    它很快,我可以使用 Thin::Server#running?而不是我的#running?方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-02
      • 2011-03-07
      • 1970-01-01
      • 2012-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多