使用 Exchangelib 加快获取电子邮件

时间:2021-03-29 13:46:26

标签: python exchangelib

目前我以这种方式使用迭代器获取电子邮件:

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 方法结合使用?谢谢。

2 个答案:

答案 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

相关问题