[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