2011-12-01 80 views
4

我有一個Ruby線程,首先連接到FTP服務器,然後上傳數以千計的文件。由於一些連接問題,Ruby線程經常掛起。所以我想爲ftp閒置設置一個超時時間。如何在Ruby中設置FTP會話閒置超時?

的後Ruby Net::FTP Timeout Threads建議使用超時模塊:

begin 
    Timeout.timeout(10) do 
    // connect to FTP and upload 
    end 
rescue Timeout::Error 
    ... 
end 

這種做法不會解決我的問題,因爲超時是針對整個計算塊,而不是從的閒置/活動啓動超時FTP會話。

那我該怎麼辦?

回答

0

嘗試這樣的事情

transferred = 0 
buffersize = 1024 
filesize = File.size(file) 
ftp.putbinaryfile(file, "/private/transfer/#{File.basename(file)}", buffersize) { |data| 
    raise "no data sent" if data.size == 0 or data.size < buffersize 
}