使用 Exchangelib 加速获取电子邮件

Speeding up fetching emails using Exchangelib

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

for item in account.inbox.filter(datetime_received__gt=__LAST_ANALYSYS__+timedelta(0,1)):

我也测试if type(item) == Message:作为另一个过滤层。

问题:获取 400 多条消息需要 5-10 分钟;我有一台 macbook pro 3.5 GHz 双核 Intel Core i7 和 16 GB 2133 MHz LPDDR3。我有相当快的宽带连接。

该应用程序将很快迁移到 Azure。检索速度会提高吗?

或者,我可以使用其他技巧吗?我看到一篇关于使用 only(attribs) 方法的 post,但不确定这是否有实质性帮助,或者它如何与 account.inbox.filter 方法结合使用?谢谢。

您可以使用诸如多线程之类的方法来加快该过程。将获取部分保存在函数中,然后 运行 this:

threading.Thread(target=(function_name))

只需尝试 .only() 方法,看看它是否对您的用例有帮助。通常是这样,因为没有它,您将获取 所有内容;附件、MIME 内容和其他重字段。如果您有一个文件夹,其中 Message 项目与其他项目类型的比率很低,您也可以通过在 item_class 上进行筛选来获益,这样您是在服务器端而不是客户端进行筛选。

.only() 支持链接,就像 Django QuerySets:some_folder.filter(...).only(...)。参见 https://ecederstrand.github.io/exchangelib/#searching