目前我以这种方式使用迭代器获取电子邮件:
for item in account.inbox.filter(datetime_received__gt=__LAST_ANALYSYS__+timedelta(0,1)):
我还测试了 if type(item) == Message:
作为另一个过滤层。
问题:获取 400 多条消息需要 5-10 分钟;我有一台 3.5 GHz 双核 Intel Core i7 和 16 GB 2133 MHz LPDDR3 的 macbook pro。我有相当快的宽带连接。
该应用程序将很快迁移到 Azure。检索速度会提高吗?
或者,我可以使用其他技巧吗?我看到了一篇关于使用 only(attribs)
网络的帖子,但不确定这是否有实质性帮助,或者如何将其与 account.inbox.filter
方法结合使用?谢谢。
答案 0 :(得分:1)
您可以使用多线程之类的方法来加快进程。将获取部分保存在一个函数中,然后运行:
threading.Thread(target=(function_name))
答案 1 :(得分:1)
只需尝试 .only()
方法,看看它是否对您的用例有帮助。通常是这样,因为没有它,您将获取一切;附件、MIME 内容和其他重要字段。如果您有一个文件夹,其中消息项目与其他项目类型的比率较低,您还可以通过对 item_class
进行过滤而受益,因此您过滤的是服务器端,而不是客户端。
.only()
支持链接,就像 Django QuerySets: some_folder.filter(...).only(...)
。见https://ecederstrand.github.io/exchangelib/#searching