[英]Python: Code crashes - Restart Script
imap_host = 'imap.gmail.com'
mail = imaplib.IMAP4_SSL(imap_host)
mail.login(user,passw)
mail.select("inbox") # connect to inbox.
while True:
try:
result, data = mail.uid('search', None, 'UNSEEN')
uid_list = data[0].split()
print len(uid_list), 'Unseen emails.'
time.sleep(60)
except KeyboardInterrupt:
print 'Quitting'
return
Traceback (most recent call last):
File "gmail_new2.py", line 12, in <module>
mail.select("inbox") # connect to inbox
File "/usr/lib/python2.6/imaplib.py", line 642, in select
typ, dat = self._simple_command(name, mailbox)
File "/usr/lib/python2.6/imaplib.py", line 1060, in _simple_command
return self._command_complete(name, self._command(name, *args))
File "/usr/lib/python2.6/imaplib.py", line 890, in _command_complete
raise self.abort('command: %s => %s' % (name, val))
imaplib.abort: command: SELECT => socket error: EOF
該代碼連接到gmail,並返回未讀電子郵件。 它工作正常,但有時會返回該錯誤並崩潰。
崩潰時如何糾正錯誤或重新啟動代碼?
如果失敗的語句是mail.select
,則可以將其包裝在try/except
塊中並實施重試策略。
如果問題與服務可用性有關,則您可能要嘗試使用指數退避策略,並使用以指數方式增長的計時器來安排重試次數。
一個簡單的示例如下:
selected = False
retry_timer = 1
while not selected:
try:
mail.select('inbox')
selected = True
except imaplib.abort:
time.sleep(retry_timer)
retry_timer *= 2
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.