如何判断imaplib2空闲响应是否是由于超时引起的

|| 我正在使用imaplib2(文档)与IMAP服务器进行交互。 我正在使用带有超时和回调的idle命令。 问题是,我看不到任何方法可以判断回调是由超时触发的,还是在服务器上有需要检查的更改。 我每次都会得到get0ѭ。 这是两种情况的调试输出: 时间到:
15:43.94 MainThread server IDLE started, timeout in 5.00 secs
15:48.94 imap.gmail.com handler server IDLE timedout
15:48.94 imap.gmail.com handler server IDLE finished
15:48.94 imap.gmail.com writer > DONE\\r\\n
15:49.17 imap.gmail.com reader < DDDM6 OK IDLE terminated (Success)\\r\\n
15:49.17 imap.gmail.com handler _request_pop(DDDM6, (\'OK\', [\'IDLE terminated (Success)\']))
发生了一些事:
18:41.34 MainThread server IDLE started, timeout in 50.00 secs
19:01.35 imap.gmail.com reader < * 1 EXISTS\\r\\n
19:01.37 imap.gmail.com handler server IDLE finished
19:01.37 imap.gmail.com writer > DONE\\r\\n
19:01.59 imap.gmail.com reader < BFCN6 OK IDLE terminated (Success)\\r\\n
19:01.59 imap.gmail.com handler _request_pop(BFCN6, (\'OK\', [\'IDLE terminated (Success)\']))
我想念什么? imaplib2中不存在该功能吗?     
已邀请:
Piers Lauder(imaplib2的作者)刚刚在imaplib2-devel邮件列表中回答了这个问题。他说:   我认为测试空闲状态是否超时的方法是执行:
instance.response(\'IDLE\')
     它将返回:
(\'IDLE\', [\'TIMEOUT\'])
     如果空闲返回超时的原因,而不是   其他的东西(例如
(\'IDLE\', [None])
)。      我同意应该对此进行记录,因此我将修复imaplib2.html   文献     
每次收到此回复时,您都必须手动检查是否有新消息。您可以将消息的UID存储在列表中,并在每次回调时将新的UID与之进行比较。这样,您可以轻松判断是否有新消息或超时。     

要回复问题请先登录注册