#ruby-on-rails #ruby #sftp #net-sftp
#ruby-on-rails #ruby #sftp #net-sftp
Вопрос:
Контекст: у меня есть ок. 20K файлов, которые будут переданы через SFTP.
Я скептически отношусь к тому, что если я отправлю их за один сеанс, то сеанс может завершиться на полпути.
Я попытался найти тайм-аут, но обнаружил, что это тайм-аут для сеанса ожидания.
Итак, я пытался найти, есть ли что-то вроде передачи в пакетах, где я могу передавать 500 файлов в пакете. И после каждой партии начнется новая сессия.
Я использую Net::SFTP
библиотеку Ruby
Мой текущий код
Net::SFTP.start(host, username, :password => password, :port => port) do |sftp|
files.each do |file| # files is an array of filenames (with path)
puts "Transferring '#{file}' to #{host}.."
sftp.upload!(file, "/#{File.basename(file)}")
end
end
Что я пробовал?
Я попытался выполнить поиск в документах или в некоторых блогах, если существует какой-либо вариант пакетной обработки.
Если такой опции нет, я планирую обработать это, как показано ниже
files.each_slice(500) do |batch|
Net::SFTP.start(host, username, :password => password, :port => port) do |sftp|
batch.each do |file| # files is an array of filenames (with path)
puts "Transferring '#{file}' to #{host}.."
sftp.upload!(file, "/#{File.basename(file)}")
end
end
end
Комментарии:
1. Что вы пробовали до сих пор? Пожалуйста, поделитесь своим кодом. Вы просто настроены скептически или действительно увидели ошибку?
2. Я настроен скептически, потому что это файлы 20K и могут занять более 2 часов. Вот почему я искал значение тайм-аута.