是否可以使用Thread作为后台进程执行sinatra应用程序(通过Thin)?

时间:2018-07-07 18:37:33

标签: ruby multithreading sinatra thin

我是红宝石编程的新手。根据项目规范,我必须在后台线程中执行Sinatra应用程序,以便在执行Sinatra应用程序后,用户可以立即接收命令行。可以通过如下所示的过程来实现

require 'sinatra/base'

  class Server < Sinatra::Base
    configure do
      set :port, 3000
      set :bind, '127.0.0.1'
      set :serve, 'thin'
    end

    get '/' do
      "<h1> Hello World! </h1>"
    end
  end

Process.daemon
Server.run!

我不能在我的项目中使用流程守护程序或流程表单,因为它会将流程与原始正在运行的流程隔离开来,而且分叉流程与原始正在运行的流程之间的通信是不可行的。现在,剩下的唯一选择是线程。那么可以通过使用线程执行相同的操作吗?

require 'sinatra/base'
  class MyApp < Sinatra::Base
    configure do
      set :port, 3000
      set :bind, '127.0.0.1'
      set :serve, 'thin'
    end
    get '/' do
      "<h1>Hello World</h1>"
    end

  end

Thread.new{
  MyApp.run!
}.join 

0 个答案:

没有答案