Python:错误不会停止脚本

时间:2013-03-12 05:32:58

标签: python parsing error-handling

我编写了一个解析一些网页的python-daemon。但有时由于某些页面与解析器不兼容而存在错误。

实际上问题是:如何在错误没有停止时制作脚本,但只是继续工作?如果可能,记录日志文件中的所有错误。

感谢。

我的部分代码:

# 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

1 个答案:

答案 0 :(得分: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,因为KeyboardInterrupt来自BaseException,而不是Exception