[Erp5-report] r8020 - /spec/mandriva/2006.0/zope-TimerService/

nobody at svn.erp5.org nobody at svn.erp5.org
Mon Jun 19 17:40:37 CEST 2006


Author: kevin
Date: Mon Jun 19 17:40:33 2006
New Revision: 8020

URL: http://svn.erp5.org?rev=8020&view=rev
Log:
Commit zope-TimerService-0.2-2mdk spec files and patches

Added:
    spec/mandriva/2006.0/zope-TimerService/TimerService-erp5.patch
Modified:
    spec/mandriva/2006.0/zope-TimerService/zope-TimerService.spec

Added: spec/mandriva/2006.0/zope-TimerService/TimerService-erp5.patch
URL: http://svn.erp5.org/spec/mandriva/2006.0/zope-TimerService/TimerService-erp5.patch?rev=8020&view=auto
==============================================================================
--- spec/mandriva/2006.0/zope-TimerService/TimerService-erp5.patch (added)
+++ spec/mandriva/2006.0/zope-TimerService/TimerService-erp5.patch Mon Jun 19 17:40:33 2006
@@ -1,0 +1,118 @@
+diff -ur TimerService/timerserver/TimerServer.py TimerService-0.2/timerserver/TimerServer.py
+--- TimerService/timerserver/TimerServer.py	2004-03-17 11:59:42.000000000 +0100
++++ TimerService-0.2/timerserver/TimerServer.py	2005-10-31 11:13:54.733011411 +0100
+@@ -6,7 +6,10 @@
+ import traceback
+ 
+ import thread
+-import sys, os, errno, time
++
++import sys, os, errno, time, socket
++
++import ZPublisher.Client
+ from StringIO import StringIO
+ from zLOG import LOG, INFO
+ 
+@@ -14,9 +17,10 @@
+ from ZPublisher.BaseRequest import BaseRequest
+ from ZPublisher.BaseResponse import BaseResponse
+ from ZPublisher.HTTPRequest import HTTPRequest
++from ZPublisher import Client
+ 
+ class TimerServer:
+-    def __init__(self, module, interval=600):
++    def __init__(self, module, interval=5):
+         self.module = module
+ 
+         self.interval = interval
+@@ -35,6 +39,34 @@
+             '\tInterval: %s seconds.\n'%(time.ctime(time.time()), interval))
+ 
+     def run(self):
++        
++        # wait until the zhttp_server exist in socket_map
++        # because TimerService has to be started after the Zope HTTPServer
++        from asyncore import socket_map     
++        while 1:
++            time.sleep(5)
++            for k, v in socket_map.items():
++                if hasattr(v, 'port'):
++                        # see Zope/lib/python/App/ApplicationManager.py: def getServers(self)
++                        type = str(getattr(v, '__class__', 'unknown'))
++                        if type == 'ZServer.HTTPServer.zhttp_server':
++                            port = v.port
++                            break
++            if port:
++                break
++                
++        ip = socket.gethostbyname(socket.gethostname())
++        
++        # To be very sure, try to connect to the HTTPServer
++        # and only start after we are able to connect
++        while 1:
++            time.sleep(5)
++            try:
++                Client.call('http://%s:%s' %(ip, port))
++            except ValueError:
++                continue
++            break
++            
+         module = self.module
+         interval = self.interval
+ 
+diff -ur TimerService/TimerService.py TimerService-0.2/TimerService.py
+--- TimerService/TimerService.py	2004-03-17 12:22:52.000000000 +0100
++++ TimerService-0.2/TimerService.py	2005-10-31 11:40:01.328681204 +0100
+@@ -53,15 +53,16 @@
+                          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))
++#        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(
++#                    interval, DateTime(tick), DateTime(prev_tick), DateTime(next_tick))
++              subscriber.process_timer(tick, interval)
+             except:
+                 LOG('TimerService', ERROR, 'Process timer error', error = sys.exc_info())
+ 
+@@ -76,6 +77,12 @@
+         if path not in subscribers:
+             subscribers.append(path)
+             self._subscribers = subscribers
++            
++    def unsubscribeByPath(self, path):
++        subscribers = self._subscribers
++        if path in subscribers:
++            subscribers.remove(path)
++            self._subscribers = subscribers
+ 
+     def unsubscribe(self, ob):
+         """ """
+@@ -94,12 +101,14 @@
+ 
+     def manage_removeSubscriptions(self, no, REQUEST=None):
+         """ """
+-        subs = self.listAllSubscriptions()
++        subs = self.lisSubscriptions()
++        
++        #LOG('asdd',INFO,subs)
+ 
+         remove_list = [subs[n] for n in [int(n) for n in no]]
+ 
+-        for subs, event, fl in remove_list:
+-            self.unsubscribe( subs, event_type=event )
++        for sub in remove_list:
++            self.unsubscribeByPath(sub)
+ 
+         if REQUEST is not None:
+             REQUEST.RESPONSE.redirect('manage_viewSubscriptions')

Modified: spec/mandriva/2006.0/zope-TimerService/zope-TimerService.spec
URL: http://svn.erp5.org/spec/mandriva/2006.0/zope-TimerService/zope-TimerService.spec?rev=8020&r1=8019&r2=8020&view=diff
==============================================================================
--- spec/mandriva/2006.0/zope-TimerService/zope-TimerService.spec (original)
+++ spec/mandriva/2006.0/zope-TimerService/zope-TimerService.spec Mon Jun 19 17:40:33 2006
@@ -1,6 +1,6 @@
 %define product   TimerService
 %define version   0.2
-%define release   1
+%define release   2
 
 %define zope_home     %{_prefix}/lib/zope
 %define software_home %{zope_home}/lib/python
@@ -13,18 +13,25 @@
 License:   GPL
 Group:     System/Servers
 Source0:   %{product}-%{version}.tar.bz2
+Patch1:    TimerService-erp5.patch
 URL:       http://dev.legco.biz/products/timerservice
 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-rootdir
 BuildArch: noarch
 Requires:  zope
 
+
 #----------------------------------------------------------------------
 %description
-Timer server for Zope.
+TimerService provides to Zope objects the ability to subsribe
+to timer events. This can be useful for any object which has to process
+tasks at regular interval in background. TimerService is a low level
+implementation. It is used by ZopeScheduler. It is also used by
+ERP5 and CMFActivity for cluster management.
 
 #----------------------------------------------------------------------
 %prep
 %setup -c
+#%patch1 -p1
 
 %build
 #cd %{product}/timerserver
@@ -43,9 +50,14 @@
 
 %post
 # Configure the zope server to make ot aware of the timerserver
-echo "%import timerserver
+echo "
+
+# The Timer Server replace the ERP5 "zope_tic_loop" script
+%import timerserver
 <timer-server>
-</timer-server>" >> /etc/zope.conf
+  interval 5
+</timer-server>
+" >> /etc/zope.conf
 # Restart zope server
 if [ "`%{_prefix}/bin/zopectl status`" != "daemon manager not running" ] ; then
   service zope restart
@@ -64,5 +76,10 @@
 
 #----------------------------------------------------------------------
 %changelog
+* Mon Jan 23 2006 Kevin Deldycke <kevin at nexedi.com> 0.2-2mdk
+- Update the description
+- Set the default interval to 5 seconds
+- Include Klaus' patch in the SRPM archive but don't apply it
+
 * Wed Jan 18 2006 Kevin Deldycke <kevin at nexedi.com> 0.2-1mdk
 - Initial release




More information about the Erp5-report mailing list