Как установить тайм-аут простоя FTP-сессии в Ruby? - PullRequest
4 голосов
/ 02 декабря 2011

У меня есть поток Ruby, который сначала подключается к FTP-серверу, а затем загружает тысячи файлов.Из-за некоторых проблем с соединением поток Ruby часто зависает.Поэтому я хочу установить таймаут для бездействия ftp.

В сообщении Ruby Net :: FTP Times Threads предлагается использовать модуль Timeout:

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

Этот подходне решит мою проблему, потому что тайм-аут для всего блока вычислений, а не тайм-аут, начиная с простоя / бездействия сеанса FTP.

Так что мне делать?

1 Ответ

0 голосов
/ 05 октября 2012

Попробуйте что-то вроде этого

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
}
...