[Erp5-report] r18753 - /erp5/trunk/products/ERP5/Tool/AlarmTool.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Wed Jan 16 22:49:43 CET 2008
Author: vincent
Date: Wed Jan 16 22:49:43 2008
New Revision: 18753
URL: http://svn.erp5.org?rev=18753&view=rev
Log:
Apply the same cache as in CMFActivity.ActivityTool to getCurrentNode method.
Reorder test to execute less costly operations first.
Use accessor to get alarmNode value.
Modified:
erp5/trunk/products/ERP5/Tool/AlarmTool.py
Modified: erp5/trunk/products/ERP5/Tool/AlarmTool.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/Tool/AlarmTool.py?rev=18753&r1=18752&r2=18753&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/Tool/AlarmTool.py (original)
+++ erp5/trunk/products/ERP5/Tool/AlarmTool.py Wed Jan 16 22:49:43 2008
@@ -54,6 +54,7 @@
last_tic = time.time()
last_tic_lock = threading.Lock()
+current_node = None
class AlarmTool(BaseTool):
"""
@@ -193,8 +194,9 @@
in zope.conf. The Default is every 5 seconds.
"""
# only start when we are the alarmNode or if it's empty
- if (self.alarmNode == self.getCurrentNode()) \
- or not self.alarmNode:
+ alarmNode = self.getAlarmNode()
+ if (not alarmNode) \
+ or (alarmNode == self.getCurrentNode()):
global last_tic
last_tic_lock.acquire(1)
try:
@@ -206,18 +208,20 @@
def getCurrentNode(self):
""" Return current node in form ip:port """
- port = ''
- from asyncore import socket_map
- 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
- ip = socket.gethostbyname(socket.gethostname())
- currentNode = '%s:%s' %(ip, port)
- return currentNode
+ global current_node
+ if current_node is None:
+ port = ''
+ from asyncore import socket_map
+ 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
+ ip = socket.gethostbyname(socket.gethostname())
+ current_node = '%s:%s' %(ip, port)
+ return current_node
security.declarePublic('getAlarmNode')
def getAlarmNode(self):
More information about the Erp5-report
mailing list