From 041b2311df4bd849ededa2402d72799a49a071e7 Mon Sep 17 00:00:00 2001 From: Stephen Diehl Date: Fri, 24 Feb 2012 18:18:22 -0500 Subject: [PATCH] Poller refactor... Checkpoint #2 --- zipline/component.py | 32 ++++++++++++++++---------------- zipline/messaging.py | 13 +++++++++---- zipline/monitor.py | 37 +++++++++++++++++++------------------ 3 files changed, 44 insertions(+), 38 deletions(-) diff --git a/zipline/component.py b/zipline/component.py index 95e887f6..5862e7e4 100644 --- a/zipline/component.py +++ b/zipline/component.py @@ -246,20 +246,20 @@ class Component(object): self.sockets.append(self.sync_socket) - def debug(self): - return ( - self.get_id , - self.huid , - socket.gethostname() , - os.getpid() , - hex(id(self)) , - ) + #def debug(self): + #return ( + #self.get_id , + #self.huid , + #socket.gethostname() , + #os.getpid() , + #hex(id(self)) , + #) - def __repr__(self): - return "<{name} {uuid} at {host} {pid} {pointer}>".format( - name = self.get_id , - uuid = self.huid , - host = socket.gethostname() , - pid = os.getpid() , - pointer = hex(id(self)) , - ) + #def __repr__(self): + #return "<{name} {uuid} at {host} {pid} {pointer}>".format( + #name = self.get_id , + #uuid = self.huid , + #host = socket.gethostname() , + #pid = os.getpid() , + #pointer = hex(id(self)) , + #) diff --git a/zipline/messaging.py b/zipline/messaging.py index ebe23f57..1613e388 100644 --- a/zipline/messaging.py +++ b/zipline/messaging.py @@ -65,15 +65,20 @@ class ComponentHost(Component): def setup_sync(self): """ - Start the sync server. """ qutil.LOGGER.debug("Connecting sync server.") self.sync_socket = self.context.socket(self.zmq.REP) self.sync_socket.bind(self.addresses['sync_address']) - self.poller = self.zmq.Poller() - self.poller.register(self.sync_socket, self.zmq.POLLIN) + # There is a namespace collision between three classes + # which use the self.poller property to mean different + # things. + # ===================================================== + self.sync_poller = self.zmq.Poller() + self.sync_poller.register(self.sync_socket, self.zmq.POLLIN) + # ===================================================== + self.sockets.append(self.sync_socket) def open(self): @@ -102,7 +107,7 @@ class ComponentHost(Component): while not self.is_timed_out(): # wait for synchronization request - socks = dict(self.poller.poll(self.heartbeat_timeout)) #timeout after 2 seconds. + socks = dict(self.sync_poller.poll(self.heartbeat_timeout)) #timeout after 2 seconds. if self.sync_socket in socks and socks[self.sync_socket] == self.zmq.POLLIN: msg = self.sync_socket.recv() diff --git a/zipline/monitor.py b/zipline/monitor.py index 7c96db31..1e43ba6e 100644 --- a/zipline/monitor.py +++ b/zipline/monitor.py @@ -82,24 +82,6 @@ class Controller(object): self.failed += 1 continue - def qos(self): - return float(self.success) / (self.success + self.failed) - - def destroy(self): - """ - Manual cleanup. - """ - self.polling = False - - for asoc in self.associated: - asoc.close() - - #if self._ctx: - #self._ctx.destroy() - - def __del__(self): - self.destroy() - def message_sender(self): """ Spin off a socket used for sending messages to this @@ -121,4 +103,23 @@ class Controller(object): s.setsockopt(zmq.SUBSCRIBE, '') self.associated.append(s) return s + def destroy(self): + """ + Manual cleanup. + """ + self.polling = False + + for asoc in self.associated: + asoc.close() + + #if self._ctx: + #self._ctx.destroy() + + def __del__(self): + self.destroy() + + def qos(self): + if not self.debug: + return + return float(self.success) / (self.success + self.failed)