1

我写了一个解析一些网页的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
4

1 回答 1

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

于 2013-03-12T05:49:31.143 回答