2011-03-19 3 views
1

imaplib2 (docs)을 사용하여 IMAP 서버와 상호 작용합니다.imaplib2 유휴 응답이 시간 초과로 인한 것인지 확인하는 방법

나는 유휴 명령을 사용하고 있으며 시간 초과 및 콜백이 있습니다.

문제는 제한 시간에 도달하여 콜백이 트리거되었는지 또는 체크 아웃해야하는 서버가 변경되었는지를 알 수있는 방법이 없다는 것입니다.

매번 ('OK', ['IDLE terminated (Success)'])이 표시됩니다.

TIMEDOUT :

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에는 기능이 없습니까?

답변

3

Piers Lauder (imaplib2의 저자)는 imaplib2-devel 메일 링리스트에서이 질문에 답했습니다. 그는 말했다 :

instance.response('IDLE') 

반환하는 :

('IDLE', ['TIMEOUT']) 

유휴 반환하는 이유 경우

내가 유휴 시간 초과 실행하는 경우 방법은 테스트 할 생각 시간 초과가 아닌 다른 것 (예 : ('IDLE', [None])).

나는이 문서화되어야한다 동의, 그래서 imaplib2.html에게 문서를 해결할 수 있습니다

0

이 응답을받을 때마다 새 메시지를 수동으로 확인해야합니다. 목록의 메시지 UID를 저장하고 각 콜백시 새 UID를 비교할 수 있습니다. 이렇게하면 새 메시지 나 시간 초과가 있는지 쉽게 알 수 있습니다.

관련 문제