[Erp5-report] r11928 - in /erp5/trunk/products/TimerService: ./ timerserver/

nobody at svn.erp5.org nobody at svn.erp5.org
Mon Jan 8 15:31:23 CET 2007


Author: kevin
Date: Mon Jan  8 15:31:21 2007
New Revision: 11928

URL: http://svn.erp5.org?rev=11928&view=rev
Log:
Second patch

Modified:
    erp5/trunk/products/TimerService/TimerService.py
    erp5/trunk/products/TimerService/timerserver/TimerServer.py

Modified: erp5/trunk/products/TimerService/TimerService.py
URL: http://svn.erp5.org/erp5/trunk/products/TimerService/TimerService.py?rev=11928&r1=11927&r2=11928&view=diff
==============================================================================
--- erp5/trunk/products/TimerService/TimerService.py (original)
+++ erp5/trunk/products/TimerService/TimerService.py Mon Jan  8 15:31:21 2007
@@ -3,7 +3,7 @@
 # Authors: Nik Kim <fafhrd at legco.biz> 
 __version__ = '$Revision: 1.3 $'[11:-2]
 
-import sys, time
+import sys, time, threading
 from DateTime import DateTime
 from Globals import InitializeClass
 from OFS.SimpleItem import SimpleItem
@@ -15,6 +15,8 @@
 from Products.PageTemplates.PageTemplateFile import PageTemplateFile
 
 current_version = 1
+
+processing_lock = threading.Lock()
 
 class TimerService(SimpleItem):
     """ timer service, all objects that wants timer
@@ -49,22 +51,30 @@
 
     def process_timer(self, interval):
         """ """
+        # Try to acquire a lock, to make sure we only run one processing at a
+        # time, and abort if another processing is currently running
+        acquired = processing_lock.acquire(0)
+        if not acquired:
+          return
+
         subscriptions = [self.unrestrictedTraverse(path)
                          for path in self._subscribers]
 
         tick = time.time()
-#        prev_tick = tick - interval
-#        next_tick = tick + interval
+        prev_tick = tick - interval
+        next_tick = tick + interval
 
 #        LOG('TimerService', INFO, 'Ttimer tick at %s\n'%time.ctime(tick))
 
         for subscriber in subscriptions:
             try:
-#                subscriber.process_timer(
-#                    interval, DateTime(tick), DateTime(prev_tick), DateTime(next_tick))
-              subscriber.process_timer(tick, interval)
+                subscriber.process_timer(
+                    interval, DateTime(tick), DateTime(prev_tick), DateTime(next_tick))
             except:
                 LOG('TimerService', ERROR, 'Process timer error', error = sys.exc_info())
+
+        # When processing is done, release the lock
+        processing_lock.release()
 
     def subscribe(self, ob):
         """ """
@@ -103,8 +113,6 @@
         """ """
         subs = self.lisSubscriptions()
 
-        #LOG('asdd',INFO,subs)
-
         remove_list = [subs[n] for n in [int(n) for n in no]]
 
         for sub in remove_list:

Modified: erp5/trunk/products/TimerService/timerserver/TimerServer.py
URL: http://svn.erp5.org/erp5/trunk/products/TimerService/timerserver/TimerServer.py?rev=11928&r1=11927&r2=11928&view=diff
==============================================================================
--- erp5/trunk/products/TimerService/timerserver/TimerServer.py (original)
+++ erp5/trunk/products/TimerService/timerserver/TimerServer.py Mon Jan  8 15:31:21 2007
@@ -6,10 +6,7 @@
 import traceback
 
 import thread
-
 import sys, os, errno, time, socket
-
-import ZPublisher.Client
 from StringIO import StringIO
 from zLOG import LOG, INFO
 
@@ -20,7 +17,7 @@
 from ZPublisher import Client
 
 class TimerServer:
-    def __init__(self, module, interval=5):
+    def __init__(self, module, interval=600):
         self.module = module
 
         self.interval = interval




More information about the Erp5-report mailing list