From ddbcd61aa4f6863ae14198593f34e13b6b6ea14f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Tue, 23 Sep 2014 14:25:57 +0200 Subject: [PATCH] handle more imap server failures --- ocrloader.py | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/ocrloader.py b/ocrloader.py index 975a26d..a777f5c 100755 --- a/ocrloader.py +++ b/ocrloader.py @@ -126,10 +126,18 @@ while True: M.login(section, cfg.get(section, 'password')) except imaplib.IMAP4.error: continue - M.select() + try: + M.select() + except socket.error: + logging.error('failure talking to imap server') + continue typ, data = M.search(None, '(NOT SEEN)') for num in data[0].split(): - typ, data = M.fetch(num, '(RFC822)') + try: + typ, data = M.fetch(num, '(RFC822)') + except socket.error: + logging.error('failure talking to imap server') + break msg = email.parser.Parser().parsestr(data[0][1]) enable_ocr = True if 'disable_ocr' in msg['Subject']: @@ -141,10 +149,18 @@ while True: payload = part.get_payload(decode=True) if not process(dict(cfg.items(section)), filename, payload, enable_ocr): logging.error(' error -> marking as unseen') - M.store(num, '-FLAGS', r'\Seen') + try: + M.store(num, '-FLAGS', r'\Seen') + except socket.error: + logging.error('failure talking to imap server') + pass break - M.close() - M.logout() + try: + M.close() + M.logout() + except socket.error: + logging.error('failure talking to imap server') + pass logging.debug('waiting a bit %s', time.strftime('%Y-%m-%d %H:%M:%S')) time.sleep(30)