在Sinatra运行后台进程

时间:2012-03-28 16:10:56

标签: ruby-on-rails ruby background sinatra

我有一个Sinatra / Rails应用程序和一个开始一些漫长过程的动作。

普通我为后台工作制作队列。但是这种情况太简单了,后台进程很少开始,所以队列是开销。

那么如何在没有队列的情况下运行后台进程?

get "/build_logs/:project" do
  LogBuilder.new(params[:project]).generate
  "done"
end

我试图将它作为一个新的Thread或Process fork,但它没有帮助。

1 个答案:

答案 0 :(得分:1)

我在Sinatra中取得了成功(简化):

get '/start_process'
  @@pid = Process.spawn('external_command_to_run')
end

这将返回进程ID,如果需要,可以使用该进程ID终止进程。此外,这是在Linux上,它不适用于Windows。