Ruby 1.9.3 - Net :: IMAP список и методы статуса реагируют очень медленно - PullRequest
2 голосов
/ 27 марта 2012

Использование Ruby 1.9.3p0

Ниже приведен мой ruby-скрипт для отображения из моей учетной записи GMail имени всех папок и количества сообщений в каждом почтовом ящике.

Ruby Script

    ENV['SSL_CERT_FILE']='/etc/ssl/certs/cacert.pem'

    begin_ = Time.now

    require 'net/imap'

    server='imap.gmail.com'
    port = 993
    username = '<MY-GMAIL-USER-ID>'
    password = '<MY-PASSWORD>'

    imap = Net::IMAP.new(server,port,true)
    imap.login(username, password)

    list = imap.list("", "*")

    puts "Gathering Data"

    folders_count_hash = Hash[ list.map do |a|
                                    [a.name, imap.status(a.name, ["MESSAGES"])["MESSAGES"]] unless a.name == "[Gmail]"   
                               end ]

    total_time = Time.now - begin_
    puts "Gathered Data"                           
    puts "Total Folders :#{folders_count_hash.size}"
    puts "RUNTIME: #{total_time}"

    folders_count_hash.each do |name, count| 
       puts "#{name} (#{count})"
    end

    imap.logout()
    imap.disconnect()

Вывод вышеуказанного скрипта:

    Gathering Data
    Gathered Data
    Total Folders :193
    RUNTIME: 189.38250329

Как видно из значения RUNTIME выводасбор данных занял 3 минуты.

Мне нужно понять, в чем причина такого медленного поведения.Это из-за большого количества папок в моей учетной записи, из-за скорости сети или из-за того, что GMail возвращал ответ?

Можно ли уменьшить эту задержку?Если да, то как я могу добиться того же.

Спасибо,

Jignesh

1 Ответ

0 голосов
/ 08 декабря 2012

Я запускаю этот код и получаю ответ через 11 секунд, но у меня есть только 39 папок.

...