[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