线程中正在运行的Sinatra应用程序不起作用

问题描述 投票:0回答:1

我正在尝试在新线程中运行Sinatra应用程序,以便也在脚本中运行其他内容,但是在执行此操作时:

require 'sinatra/base'

class App < Sinatra::Base
...some routes...
end

Thread.new do
  App.run!
end

没有任何反应,并且Sinatra服务器未启动。为了实现这一目标,我缺少什么吗?

ruby sinatra
1个回答
0
投票

最后,我在一个线程中运行另一个ruby进程,但是从Sinatra应用程序运行,它工作得很好。

class App < Sinatra::Base
    threads = []

    threads <<
      Thread.new do
        Some::Other::Thing
      rescue StandardError => e
        $stderr << e.message
        $stderr << e.backtrace.join("\n")
      end

    trap('INT') do
      puts 'trapping'
      threads.each do |t|
        puts 'killing'
        Thread.kill t
      end
    end

    run!
end

而且我在退出Sinatra应用程序时添加了一个控件,也会杀死打开的线程。

© www.soinside.com 2019 - 2024. All rights reserved.