Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Ruby: Библиотеки > Net/FTP - проблема листинга


Автор: Troffi 23.8.2008, 10:46
Здравствуйте, встретил тут необычную проблему связанную с модулем ftp:
Для начала проверил всё подключение с помощью ftp:

Код

...@...:/$ ftp ftp.server
Connected to ftp.server.
220 server FTP server.
Name (ftp.server:...): username
331 Password required for username.
Password:*****
230 username! Welcome to ftp.server!
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd /path/
250 CWD command successful
ftp> dir
200 PORT command successful
150 Opening ASCII mode data connection for file list
...Список директорий и файлов...
226 Transfer complete.


Теперь я попробовал ту же самую задачу решить с помощью python:

Код

from ftplib import FTP
ftp = FTP("ftp.server")
ftp.login("username","*****")
 # 230 username! Welcome to ftp.server!
ftp.cwd("/path/")
 # 250 CWD command successful
ftp.retrlines('LIST')
 # ...Список директорий и файлов...
 # 226 Transfer complete.


А теперь конечно же ruby (с помощью irb):

Код

irb(main):001:0> require 'net/ftp'
=> true
irb(main):002:0> ftp = Net::FTP.new("ftp.server")
=> #<Net::FTP:0xb7c7b408 @sock=#<TCPSocket:0xb7c7b304>, @passive=false, @mon_owner=nil, @binary=true, @last_response_code="220", @resume=false, @mon_waiting_queue=[], @last_response="220 server FTP server.\n", @debug_mode=false, @mon_entering_queue=[], @mon_count=0>
irb(main):003:0> ftp.login("username","*****")
=> "230 username! Welcome to ftp.server!\n"
irb(main):004:0> ftp.chdir("/path/")
=> nil
irb(main):005:0> ftp.list()
=> ... Список директорий и файлов...


Так вот проблема заключается в том, что в первх двух случаях: с помощью ftp и python листинг директории проходит на ура практически мнгновенно, а вот ruby почему-то спотыкается на этом месте и листинг длится секунд 15. Может кот-нибудь сталкивался с такой проблемой?
Заранее благодарен.

Автор: kemiisto 9.10.2008, 00:09
Цитата(Troffi @  23.8.2008,  09:46 Найти цитируемый пост)
Может кот-нибудь сталкивался с такой проблемой?

Поздновато, конечно... Я попробовал на Windows с Ruby 1.8.6 - все отлично работает.
Код

require 'net\ftp'

ftp = Net::FTP.new("yadviga.ru", "kemiisto", "пароль")
ftp.chdir("httpdocs")
ftp.list { |a| puts a }

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)