在我的 Rails 控制器中,我想将文件下载到public
项目的文件夹中(使用 Linux 系统命令wget
)。然后我希望文件在那里停留一个小时,然后再调用命令rm
删除它。我可以设置一个超时,以便代码执行在稍后恢复之前暂停吗?
问问题
2564 次
1 回答
3
你不能设置超时有两个原因:
首先,该进程将被Web服务器超时杀死。
其次,即使你设置了适合你需要的超时时间,负责等待的进程也会吃掉资源,并且无法使用。要解决这个问题,你将不得不分叉另一个服务器进程,你真的需要这个吗?
但是你可以使用https://github.com/jmettraux/rufus-scheduler
例如,在您的控制器中
require 'rubygems'
require 'rufus/scheduler'
def download_using_wget
...
if some_method_to_wget_file
scheduler = Rufus::Scheduler.start_new
scheduler.in '1h' do
some_code_to_rm_file(file)
end
end
...
并且 some_code_to_rm_file 将在您 wget 文件后一小时内启动
于 2012-11-01T03:58:48.793 回答