def finalize(self): for i in self._all_threads: i.join() for sock in self._req_socks: utils.graceful_close(sock) utils.graceful_close(self._router) if not self._context.closed: self._context.destroy(0)
def main_cleanup(self): while True: with self._context_lock: now = time.time() for k, v in list(self.storage.items()): if (now - v['last_heartbeat']) > _configs.NS_CLEANUP_WAIT: info, req_sock = self.storage.unregister(k) self._poller.unregister(req_sock) utils.graceful_close(req_sock) self._req_socks.remove(req_sock) # TODO:: use controller's heartbeat all_peers_to_inform = set() for i in info['inputs']: all_peers_to_inform = all_peers_to_inform.union( self.storage.get_outputs(i)) for i in info['outputs']: all_peers_to_inform = all_peers_to_inform.union( self.storage.get_inputs(i)) logger.debug('Inform died: {}.'.format( str(all_peers_to_inform))) for peer in all_peers_to_inform: self._control_send_queue.put({ 'sock': self.storage.get_req_sock(peer), 'countdown': _configs.CTL_CTL_SND_COUNTDOWN, 'payload': { 'action': _configs.Actions.NS_NOTIFY_CLOSE_REQ, 'uid': k }, }) logger.info( 'Unregister timeout controller {}.'.format(k)) time.sleep(_configs.NS_CLEANUP_WAIT)
def finalize(self): graceful_close(self._tosock) graceful_close(self._frsock) self._context.term()
def finalize(self): self._stop_event.set() for i in self._all_threads: i.join() for sock in self._all_socks: utils.graceful_close(sock)
def close_socket(self, sock): utils.graceful_close(sock) self._all_socks.remove(sock) return self