在Sinatra中运行后台进程

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

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

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

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

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

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

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

这将返回进程ID,您可以在以后根据需要终止进程ID。 此外,这是在Linux上,它不适用于Windows。