Увеличьте размер чека IMAP в Rails - PullRequest
0 голосов
/ 29 ноября 2018

Я не могу найти какой-либо возможный способ увеличения размера буфера для извлечения почты в Rails, используя либо net / imap, либо почтовый гем из mikel в github.

Проблема: я хочу получать почту каждый раз, когда пользователь входит в системуи это слишком медленно в данный момент.Для получения 40 писем, которые имеют не более 5 МБ, требуется около 20 секунд.Сейчас я использую gmail для тестирования, поэтому это также не должно быть узким местом.Я не хочу иметь локальную копию всех писем, поэтому их хранение тоже не является решением.

Так что на данный момент мне кажется, что это проблема маленьких кусочков по 16 КБ, которая по умолчаниюIMAP и что это должно быть намного быстрее, когда вы можете изменить размер кусков.

У меня есть следующий метод получения писем:

def fetch_headers
  imap = Net::IMAP.new('imap.googlemail.com', ssl: true)
  begin
    imap.authenticate('PLAIN', 'mail@...', 'password')
  rescue Net::IMAP::Exception => err
    raise Error, err.message
  end
  assessment_memos = []
  begin
    imap.select('INBOX')
    imap.search('ALL').each do |msg_id|
      msg = imap.fetch(msg_id, 'BODY[HEADER.FIELDS (Date From Subject)]')
      header_hash = to_hash_helper msg[0].attr['BODY[HEADER.FIELDS (Date From Subject)]']
      assessment_memos.push(header_hash)
    end
  ensure
    imap.logout
    imap.disconnect
  end
  assessment_memos
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...