如何加速Python编写的Yahoo邮箱客户端远程变更检测速度?
Yahoo邮箱客户端远程变更检测优化问题
我使用Python结合tkinter开发了一款Yahoo邮箱客户端,具备浏览文件夹、查看邮件、收发及删除邮件等基础功能,但远程变更检测速度过慢(需较长时间感知远程操作的变化),我的Yahoo邮箱约有170封邮件。
为解决该问题,我编写了fetch_idle.py与fetch_poll.py脚本:
- 尝试使用IMAP IDLE命令,但发现Yahoo与Gmail均不支持该命令,执行
fetch_idle.py时触发MailboxTaggedResponseError错误。 - 改用轮询读取邮箱所有UID并对比差异的方案,原有
fetch_uids函数获取UID需10-30秒。对比Debian Evolution与macOS Mail客户端,它们执行手动同步时能快速感知变更。
经@Max建议,将fetch_uids函数改为使用mbox.uids('ALL')获取UID,耗时降至2秒,但仍需进一步优化以实现更快的远程变更感知。
环境
- Python 3.9.2
- Debian GNU/Linux 11 (bullseye)
内容的提问来源于stack exchange,提问作者Vladimir Zolotykh
相关产品推荐
相关产品推荐

