如何解决开始一些过程,然后在Sinatra上重定向回即使过程仍在运行
|| 我有一个ruby脚本,需要花费一些时间才能完成运行。我尝试运行此代码:get \"/run\" do
exec \"ruby #{\"/home/user/script.rb\"} &\"
redirect \'/\'
end
但是发生的是,我的Sinatra脚本然后等待该过程完成。如何执行该脚本,使其在后台运行,而我的Sinatra脚本只是重定向回去?
谢谢!
解决方法
我遇到了类似的问题,下面是对我有用的方法。
get \"/run\" do
task = Thread.new {
p \"sleeping for 10 secs\"
sleep(10)
p \"woke up :)\"
}
redirect \'/\'
end
,您必须分叉并分离子进程。
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 :)\"
这对我有用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。