我编写了一个解析一些网页的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
答案 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
。