2013-05-05 57 views
4

從Rails的系統調用設置超時,我做一個系統調用來wget在Rails的

system("wget", ...) 

我想設置一個超時這個調用,因此,如果時間太長(這很可能是意味着下載的文件太多,或者下載的文件很大),我想停止它並向用戶返回一個錯誤,以便我的服務器不會超載。我怎樣才能做到這一點?

回答

2

你特別需要運行在這樣的一個子shell的電話嗎?如果沒有,使用超時和反引號:

require 'timeout' 

Timeout.timeout(3) do 
    puts `tree /` # raises an exception, which you can rescue and handle 
end 

如果你確實需要從外部運行它,不過,我的東西去像Subexec