2013-03-12 105 views
1

我寫了一個python守護進程來解析一些網頁。但有時由於某些頁面與解析器不兼容而出現錯誤。Python:錯誤不停止腳本

其實問題:如何在錯誤沒有停止的情況下製作腳本,但只是繼續工作?如果可能的話,記錄日誌文件中的所有錯誤。

謝謝。我的代碼

部分:

# row - array of links 
for row in result: 
    page_html = getPage(row['url']) 
    self.page_data = row 

    if page_html != False: 
     self.deletePageFromIndex(row['id']) 
     continue 

    parser.mainlink = row['url'] 
    parser.feed(page_html) 

    links = parser.links # get links from page 
    words = wordParser(page_html); # words from page 

    # insert data to DB 
    self.insertWords(words) 
    self.insertLinks(links) 

    # print row['url'] + ' parsed. sleep... ' 

    self.markAsIndexed(row['id']) 
    sleep(uniform(1, 3)) # sleep script 
+4

你有什麼'嘗試:'編? – wim 2013-03-12 05:36:59

+0

@wim:不錯1 ;-) – 2013-03-12 06:01:03

回答

1

這裏是你可以做什麼:

import logging 
should_abort = False 

def do_stuff(): 
    global should_abort 
    ... 

def main(): 
    while not should_abort: # your main loop 
     try: 
      do_stuff() 
     except MyException1, e: 
      logging.exception('GOT MyException1 %s', e) 
     except MyException2, e: 
      logging.exception('GOT MyException2 %s', e) 
     except Exception, e: 
      logging.exception('UNKNOWN EXCEPTION %s', e) 

這仍然允許你停止使用Ctrl-C,作爲KeyboardInterruptBaseException,不Exception派生。