Python IMAPClient fetch()方法优化大数据

时间:2017-07-24 08:29:17

标签: python imap imaplib imapclient

我正在使用IMAPClient撰写电子邮件客户端。我现在的目标是在我的INBOX中呈现消息列表。消息数量约为4千。问题是需要很长时间来获取这些字母:

server = IMAPClient(HOST, use_uid=True, ssl=True)
server.login(USERNAME, PASSWORD)    
server.select_folder('INBOX')
messages = server.search(['NOT DELETED'])
response = server.fetch(messages, ['RFC822', 'BODY[TEXT]']) # TAKES AGES TO FINISH

我应该直接询问前20条消息,然后如果用户向下滚动,请询问下一条20条消息(按收到该字母的日期排序)。换句话说,我应该以某种方式 paginate fetch命令,或者让它变得懒惰。但IMAPClient似乎对此保持沉默,尽管这似乎是一个重大问题。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您最好的选择是将//= require jquery //= require jquery_ujs //= require rails_ujs //= require bootstrap //= require turbolinks //= require_tree .分解成块,然后只需要请求您需要的消息。

为了快速构建消息列表以便向用户显示,您可能需要首先考虑为所有消息请求messages。 IMAP服务器通常针对此进行了优化,ENVELOPE响应远小于ENVELOPERFC822响应。