使用gmailapi进行长时间轮询

2024-09-24 22:18:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在构建一个将运行数天的安装,需要从GMail收件箱中实时收到通知。gmailapi对于我需要的许多特性都很好,所以我想用它。但是,它没有IMAP那样的空闲命令。在

现在,我已经创建了一个gmailapi实现,每隔几秒钟轮询一次邮箱。这很好用,但过了一段时间就会超时(我得到“通过对等端重置连接”)。那么,关闭sesson并每隔半小时左右重新启动一次以保持其活动状态(如空闲状态)是否合理?这是一次可怕的黑客攻击吗?它会让谷歌在半夜里砸到我的门?在

正确的解决方案是同时使用IMAP登录并使用IDLE通知我的gmailapi模块启动并在更改发生时将其拉入?或者我应该接受它并创建一个仅IMAP的实现?在


Tags: 模块命令状态特性解决方案gmail空闲idl
2条回答

肯定会推荐使用IMAP,请注意,即使使用IMAP IDLE命令,它也不是实时的,它只是每隔几个轮询一次(5?)在盖子下面等几秒钟,然后推到连接处。(自己做个实验,看看那里的延迟。)

查询历史记录.list()经常是相当便宜的,应该可以。如果这是针对大量用户的,您可能需要对非活动邮箱进行一些优化,如智能退避(例如,每次没有更新退避5秒,最多一到两分钟)?在

谷歌绝对不会破门而入,甚至不会注意到,除非你每秒钟都有100万用户。:)

API真正的推送通知肯定是需要的。在

你正在被对等方重置连接,因为你超过了谷歌配额。每个gmailapi请求都定义了配额here。在

相关问题 更多 >