[Checkins] SVN: lovely.remotetask/trunk/src/lovely/remotetask/service.py Remove canceled cron jobs.

Jürgen Kartnaller juergen at kartnaller.at
Tue Apr 17 09:20:47 EDT 2007


Log message for revision 74200:
  Remove canceled cron jobs.
  

Changed:
  U   lovely.remotetask/trunk/src/lovely/remotetask/service.py

-=-
Modified: lovely.remotetask/trunk/src/lovely/remotetask/service.py
===================================================================
--- lovely.remotetask/trunk/src/lovely/remotetask/service.py	2007-04-17 12:45:56 UTC (rev 74199)
+++ lovely.remotetask/trunk/src/lovely/remotetask/service.py	2007-04-17 13:20:46 UTC (rev 74200)
@@ -156,7 +156,7 @@
     def processNext(self, now=None):
         job = self._pullJob(now)
         if job is None:
-            return False
+            raise IndexError
         jobtask = zope.component.getUtility(
                         self.taskInterface, name=job.task)
         job.started = datetime.datetime.now()
@@ -173,7 +173,10 @@
 
     def process(self, now=None):
         """See interfaces.ITaskService"""
-        while self.processNext(now):
+        try:
+            while self.processNext(now):
+                pass
+        except IndexError:
             pass
 
     def _pullJob(self, now=None):
@@ -185,6 +188,7 @@
             job = self._scheduledQueue.pull()
             if job.status is not interfaces.CANCELLED:
                 self._insertCronJob(job, now)
+        # try to get the next cron job
         while True:
             try:
                 first = self._scheduledJobs.minKey()
@@ -198,9 +202,10 @@
                 self._scheduledJobs[first] = jobs[1:]
                 if len(self._scheduledJobs[first]) == 0:
                     del self._scheduledJobs[first]
-                self._insertCronJob(job, now)
                 if job.status != interfaces.CANCELLED:
+                    self._insertCronJob(job, now)
                     return job
+        # get a job from the input queue
         if self._queue:
             return self._queue.pull()
         return None



More information about the Checkins mailing list