[Checkins] SVN: Sandbox/gotcha/z3c.taskqueue/src/z3c/taskqueue/baseservice.py putting back execption logging code

Godefroid Chapelle gotcha at bubblenet.be
Thu Apr 22 06:36:12 EDT 2010


Log message for revision 111255:
  putting back execption logging code
  

Changed:
  U   Sandbox/gotcha/z3c.taskqueue/src/z3c/taskqueue/baseservice.py

-=-
Modified: Sandbox/gotcha/z3c.taskqueue/src/z3c/taskqueue/baseservice.py
===================================================================
--- Sandbox/gotcha/z3c.taskqueue/src/z3c/taskqueue/baseservice.py	2010-04-22 10:34:26 UTC (rev 111254)
+++ Sandbox/gotcha/z3c.taskqueue/src/z3c/taskqueue/baseservice.py	2010-04-22 10:36:11 UTC (rev 111255)
@@ -33,7 +33,9 @@
 
 log = logging.getLogger('z3c.taskqueue')
 
+storage = threading.local()
 
+
 class BaseTaskService(contained.Contained, persistent.Persistent):
     """A persistent task service.
 
@@ -197,6 +199,9 @@
                 job.status = interfaces.ERROR
             return True
         job.started = datetime.datetime.now()
+        if not hasattr(storage, 'runCount'):
+            storage.runCount = 0
+        storage.runCount += 1
         try:
             job.output = jobtask(self, job.id, job.input)
             if job.status != interfaces.CRONJOB:
@@ -206,9 +211,15 @@
             if job.status != interfaces.CRONJOB:
                 job.status = interfaces.ERROR
         except Exception, error:
-            job.error = error
-            if job.status != interfaces.CRONJOB:
-                job.status = interfaces.ERROR
+            if storage.runCount <= 3:
+                log.error('Caught a generic exception, preventing thread '
+                          'from crashing')
+                log.exception(str(error))
+                raise
+            else:
+                job.error = error
+                if job.status != interfaces.CRONJOB:
+                    job.status = interfaces.ERROR
         job.completed = datetime.datetime.now()
         return True
 



More information about the checkins mailing list