Ruby 在Sinatra上启动一些进程,然后重定向回(即使进程仍在运行)
我有一个ruby脚本,它需要一些时间来完成运行。我已尝试运行以下代码:Ruby 在Sinatra上启动一些进程,然后重定向回(即使进程仍在运行),ruby,process,background,sinatra,Ruby,Process,Background,Sinatra,我有一个ruby脚本,它需要一些时间来完成运行。我已尝试运行以下代码: get "/run" do exec "ruby #{"/home/user/script.rb"} &" redirect '/' end 但是发生的是,我的Sinatra脚本然后等待,直到过程完成。如何执行该脚本,让它在后台运行,而我的Sinatra脚本只是重定向回来 谢谢 您必须分叉并分离子进程 require 'rubygems' require 'sinatra' get "/" do "i
get "/run" do
exec "ruby #{"/home/user/script.rb"} &"
redirect '/'
end
但是发生的是,我的Sinatra脚本然后等待,直到过程完成。如何执行该脚本,让它在后台运行,而我的Sinatra脚本只是重定向回来
谢谢 您必须分叉并分离子进程
require 'rubygems'
require 'sinatra'
get "/" do
"index"
end
get "/run" do
Process.detach(fork{ exec "ruby script.rb &"})
redirect '/'
end
假设script.rb类似于
p "sleeping for 10 secs"
sleep(10)
p "woke up :)"
这对我很有用。您必须分叉并分离子进程
require 'rubygems'
require 'sinatra'
get "/" do
"index"
end
get "/run" do
Process.detach(fork{ exec "ruby script.rb &"})
redirect '/'
end
假设script.rb类似于
p "sleeping for 10 secs"
sleep(10)
p "woke up :)"
这对我有效。我遇到了类似的问题,下面是对我有效的方法
get "/run" do
task = Thread.new {
p "sleeping for 10 secs"
sleep(10)
p "woke up :)"
}
redirect '/'
end
我遇到了一个类似的问题,下面是对我有效的方法
get "/run" do
task = Thread.new {
p "sleeping for 10 secs"
sleep(10)
p "woke up :)"
}
redirect '/'
end
可能的重复:我试过了,它有相同的效果可能的重复:我试过了,它有相同的效果实际上它对我不起作用,但它在一个简单的脚本中工作。。。发生的事情是浏览器等待页面响应,在终端中你可以看到脚本的输出实际上它对我不起作用,但它在普通脚本中起作用。。。发生的情况是浏览器等待页面响应,在终端中可以看到脚本的输出