在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。