ruby ftp超时问题

时间:2011-08-09 10:48:12

标签: ruby ftp

我编写了一个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!"

3 个答案:

答案 0 :(得分:5)

找到答案:需要添加以下内容

ftp.passive = true

答案 1 :(得分:0)

您要下载的文件有多大?你确定它会在20秒内完成下载吗?您是否尝试删除begin/rescue/end块?

答案 2 :(得分:0)

在添加两个require语句并将Timeout值从20更改为20_000之后,上面的代码对我来说很好。