我编写了一个ruby脚本,使用ftp / net从ftp站点检索数据。除了尝试下载文件本身时超时的最后阶段,一切似乎都运行良好。任何想法为什么会这样? 'samples'现在有一个目录用于测试目的。
ftp = Net::FTP.new('ftp.sra.ebi.ac.uk')
ftp.login
puts "connected!"
errors = []
samples = ["SRR016000"]
samples.each do |sample|
files = ftp.chdir("vol1/fastq/SRR016/#{sample}/")
puts "changed directory"
#files = ftp.list('SRR*')
begin
Timeout.timeout(20) do
ftp.getbinaryfile("#{sample}_1.fastq.gz")
end
rescue Timeout::Error
errors << "File download timed out for: #{sample}"
puts errors.last
end
end
ftp.close
puts "All done!"
答案 0 :(得分:5)
找到答案:需要添加以下内容
ftp.passive = true
答案 1 :(得分:0)
您要下载的文件有多大?你确定它会在20秒内完成下载吗?您是否尝试删除begin/rescue/end
块?
答案 2 :(得分:0)
在添加两个require
语句并将Timeout值从20更改为20_000之后,上面的代码对我来说很好。