我正在使用imaplib2docs)与IMAP服务器交互。
我正在使用idle命令,有一个超时和一个回调。
问题是,我看不到任何方法来判断回调是由超时触发的,还是服务器上发生了需要签出的更改。
我只是每次都会得到('OK', ['IDLE terminated (Success)'])
以下是两种情况下的调试输出:
时间点:

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)']))

我错过了什么?
功能是否不存在于IMAPLB2中?

最佳答案

Piers Lauder(imaplib2的作者)刚刚在imaplib2 devel邮件列表中回答了这个问题。他说:
我认为测试空闲是否超时的方法是执行:

instance.response('IDLE')

将返回:
('IDLE', ['TIMEOUT'])

如果空闲返回的原因是超时,而不是
其他东西(如('IDLE', [None]))。
我同意这应该被记录下来,所以我将修复imaplib2.html
文件

关于python - 如何判断imaplib2空闲响应是否是由于超时导致的,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5359134/

10-09 20:39