我有一个Sinatra / Rails应用程序和一个开始一些漫长过程的动作。
普通我为后台工作制作队列。但是这种情况太简单了,后台进程很少开始,所以队列是开销。
那么如何在没有队列的情况下运行后台进程?
get "/build_logs/:project" do
LogBuilder.new(params[:project]).generate
"done"
end
我试图将它作为一个新的Thread或Process fork,但它没有帮助。
答案 0 :(得分:1)
我在Sinatra中取得了成功(简化):
get '/start_process'
@@pid = Process.spawn('external_command_to_run')
end
这将返回进程ID,如果需要,可以使用该进程ID终止进程。此外,这是在Linux上,它不适用于Windows。