ruby - 如何在 Ruby 中设置 FTP session 空闲超时?

标签 ruby ftp timeout

我有一个 Ruby 线程,它首先连接到 FTP 服务器,然后上传数千个文件。由于某些连接问题,Ruby 线程经常挂起。所以我想为 ftp 闲置设置一个超时时间。

帖子Ruby Net::FTP Timeout Threads建议使用超时模块:

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

这种方法不会解决我的问题,因为超时是针对整个计算 block 的,而不是从 FTP session 的空闲/不活动开始的超时。

那我该怎么办呢?

最佳答案

尝试这样的事情

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
}

关于ruby - 如何在 Ruby 中设置 FTP session 空闲超时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8350096/

相关文章:

ruby - 如何修复此 Ruby Yes/No-Style Loop?

ruby-on-rails - Rails 中的 "respond_to do |x| .. end"是什么 Ruby 语言结构?

java ftp传输文件导致文件损坏

c++ - InternetReadFile 返回末尾带有额外字符的文本

JavaScript/Angular : timeout wrapped in function not workink with boolean value

node.js在发出http请求时区分错误

ruby - 设置嵌套数组中元素的值

ruby-on-rails - Typhoeus::Request.new(...) 不起作用,但 Typhoeus::Request.get(...) 可以!

ssl - 带 XCRC 和 SSL 的 Windows FTP 服务器(CuteFTP SS 除外)

bash - 如何减少ssh连接超时值