Revision: 4107 Author: btongminh Date: 2007-08-25 09:30:33 +0000 (Sat, 25 Aug 2007)
Log Message: ----------- Better exception handling
Modified Paths: -------------- trunk/pywikipedia/image_replacer.py
Modified: trunk/pywikipedia/image_replacer.py =================================================================== --- trunk/pywikipedia/image_replacer.py 2007-08-24 20:20:11 UTC (rev 4106) +++ trunk/pywikipedia/image_replacer.py 2007-08-25 09:30:33 UTC (rev 4107) @@ -13,6 +13,7 @@ import config, wikipedia import re, time import threadpool +import sys, os, signal, traceback
from delinker import wait_callback, output, connect_database from checkusage import family @@ -176,10 +177,22 @@ self.config = config threadpool.Thread.__init__(self, pool) - def do(self, (old_image, new_image, user, comment, not_ok)): + + def do(self, args): + try: + self.report(args) + except Exception, e: + output(u'A critical error during reporting has occured!') + output('%s: %s' % (e.__class__.__name__, str(e)), False) + traceback.print_exc(file = sys.stderr) + self.exit() + os.kill(0, signal.SIGTERM) + + def report(self, (old_image, new_image, user, comment, not_ok)): not_ok_items = [] for wiki, namespace, page_title in not_ok: - site = family(wiki) + # Threadsafety? + site = wikipedia.getSite(family(wiki)) if unicode(site) == unicode(self.site): title = u'%s:%s' % (site.namespace(namespace), page_title) else: