我有一个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 :(得分: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
}