使用 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
目前我使用迭代器以这种方式获取电子邮件:
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