Почему я получаю ошибку тайм-аута sftp?

Я использую гем net-sftp для доступа к файлу в учетной записи sftp. Я выполняю некоторые массовые операции, такие как копирование более 100 файлов из одной учетной записи sftp в другую, но получаю сообщение об ошибке:

Net::SFTP::StatusException (4, "failure")

Я думаю, это происходит из-за тайм-аута сеанса или ограничения размера буфера? Если это так, как мне увеличить лимит, чтобы я мог выполнять массовые операции для более чем 100 файлов.

Вот трассировка стека:

    Net::SFTP::StatusException (4, "failure")
"/usr/local/lib/ruby/gems/1.8/gems/net-sftp-2.0.2/lib/net/sftp/session.rb:845:in `wait_for'",
"/usr/local/lib/ruby/gems/1.8/gems/net-sftp-2.0.2/lib/net  /sftp/session.rb:589:in `rename!'",
"/home/xxxxx_user/prod/lib/tasks  /xxxxx_rfa_intake.rake:72:in `move'",
"/home/xxxxx_user/prod/lib/tasks  /xxxxx_rfa_intake.rake:61:in `process'",
"/home/xxxxx_user/prod/lib/tasks  /xxxxx_rfa_intake.rake:26",
"/home/xxxxx_user/prod/lib/tasks  /xxxxx_rfa_intake.rake:20:in `each'",
"/home/xxxxx_user/prod/lib/tasks/xxxxx_rfa_intake.rake:20",
"/usr/local/lib/ruby/gems/1.8/gems/net-sftp-2.0.2/lib/net/sftp/session.rb:938:in `call'",
"/usr/local/lib/ruby/gems/1.8/gems/net-sftp-2.0.2/lib/net/sftp/session.rb:938:in `do_version'",
"/usr/local/lib/ruby/gems/1.8/gems/net-sftp-2.0.2/lib/net/sftp/session.rb:938:in `each'",
"/usr/local/lib/ruby/gems/1.8/gems/net-sftp-2.0.2/lib/net/sftp/session.rb:938:in `do_version'",
"/usr/local/lib/ruby/gems/1.8/gems/net-sftp-2.0.2/lib/net/sftp/session.rb:908:in `when_channel_polled'",
"/usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `to_proc'",
"/usr/local/lib/ruby/gems/1.8/gems/net-ssh-2.0.21/lib/net/ssh/connection/channel.rb:311:in `call'",

person Lohith MV    schedule 13.01.2012    source источник


Ответы (1)


Эти две строки говорят, что код истекает в ожидании переименования:

"/usr/local/lib/ruby/gems/1.8/gems/net-sftp-2.0.2/lib/net/sftp/session.rb:845:in `wait_for'", 
"/usr/local/lib/ruby/gems/1.8/gems/net-sftp-2.0.2/lib/net/sftp/session.rb:589:in `rename!'", 

что происходит в вашем коде:

"/home/xxxxx_user/prod/lib/tasks/xxxxx_rfa_intake.rake:72:in `move'", 

По какой-то причине ход терпит неудачу. По моему опыту, это связано либо с неправильными разрешениями, либо с заполнением диска, но может быть и много других причин.

Потому что вы не предоставили никакого исходного кода, который помог бы мне настолько сильно, насколько я могу.

person the Tin Man    schedule 13.01.2012
comment
вот мой код Net :: SFTP.start (хост, имя пользователя,: пароль = ›пароль) do | sftp | sftp.dir.entries (@path) .each do | entry | move (sftp, entry, @ from, @processed_path) end end def move (remote, rfa, from, to) remote.rename! (# {from} / # {rfa.name}, # {to} / # {rfa .name}) // эта строка получает ошибку end - person Lohith MV; 13.01.2012
comment
он работает нормально для первых нескольких файлов, скажем, около 100, после этого он выдает эту ошибку. - person Lohith MV; 13.01.2012