簡體   English   中英

Python:檢查電子郵件時代碼隨機崩潰

[英]Python: Code crashes randomly when checking e-mail

這段代碼:

import imaplib, re
import os
import time

conn = imaplib.IMAP4_SSL("imap.gmail.com", 993)
conn.login("ddd@ddd.com", "ddd")

while(True):
    unreadCount = re.search("UNSEEN (\d+)", conn.status("INBOX", "(UNSEEN)")[1][0]).group(1)
    print unreadCount

    if int(unreadCount) > 20:
      os.system('heroku restart --app warm-beach-203')
        #os.system('ls')
        #print "Restarting server...."

    time.sleep(60)

輸出:

0
1
0
0
0
0
0
4
Traceback (most recent call last):
  File "gmail.py", line 10, in <module>
    unreadCount = re.search("UNSEEN (\d+)", conn.status("INBOX", "(UNSEEN)")[1][0]).group(1)
  File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/imaplib.py", line 704, in status
    typ, dat = self._simple_command(name, mailbox, names)
  File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/imaplib.py", line 1059, in _simple_command
    return self._command_complete(name, self._command(name, *args))
  File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/imaplib.py", line 889, in _command_complete
    typ, data = self._get_tagged_response(tag)
  File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/imaplib.py", line 990, in _get_tagged_response
    self._get_response()
  File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/imaplib.py", line 907, in _get_response
    resp = self._get_line()
  File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/imaplib.py", line 1000, in _get_line
    line = self.readline()
  File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/imaplib.py", line 1170, in readline
    char = self.sslobj.read(1)
  File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/ssl.py", line 136, in read
    return self._sslobj.read(len)
socket.error: [Errno 60] Operation timed out

我不明白為什么它會隨機崩潰。

最后一條錯誤線是描述性的:IMAP操作完成之前,連接已超時。 可能只是Gmail運行緩慢。 如果是這樣,您可以嘗試延長超時時間,如下所示:

import socket
socket.setdefaulttimeout(15)  # In seconds

其中15是您實驗確定的值,對您來說效果很好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM