def run(self): while not self.stopper.is_set() and self.running: logger.debug("[Master ] [{}] Checking workers statuses.".format(self.thread_tag)) for worker, worker_info in self.master.get_connected_workers().items(): if time.time() - worker_info['status']['last_keep_alive'] > get_cluster_items_master_intervals()['max_allowed_time_without_keepalive']: logger.critical("[Master ] [{}] [{}]: Last keep alive is higher than allowed maximum. Disconnecting.".format(self.thread_tag, worker)) self.master.remove_worker(worker) self.sleep(self.interval)
def __init__(self, cluster_config): Server.__init__(self, cluster_config['bind_addr'], cluster_config['port'], MasterManagerHandler) logger.info("[Master] Listening '{0}:{1}'.".format(cluster_config['bind_addr'], cluster_config['port'])) # Intervals self.interval_recalculate_integrity = get_cluster_items_master_intervals()['recalculate_integrity'] self.config = cluster_config self.handler = MasterManagerHandler self._integrity_control = {} self._integrity_control_lock = threading.Lock() # Threads self.stopper = threading.Event() # Event to stop threads self.threads = {} self._initiate_master_threads()
def __init__(self, master, stopper): ClusterThread.__init__(self, stopper) self.master = master self.interval = get_cluster_items_master_intervals( )['check_worker_lastkeepalive'] self.thread_tag = "WorkerChecks"