2011-12-01 100 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 
}