def init_worker_host_nse_envs(isc_tasks): for it in isc_tasks: isnse.clear_transport_complete_flag_files(*it.k_m_n, it.min_ne, it.max_ne) isnse.create_transport_complete_flag_file(*it.k_m_n, 1) nse_1_path = isnse.get_nse_condition_file_path( *it.k_m_n, 1, it.lp_type, it.is_use_extended_rules) pathlib.Path(nse_1_path).touch() isnse.clear_task_terminate_flag_files(*it.k_m_n)
def init_kmn_isc_task_master_from_config(cls, isc_config_file="isets-tasks.json", sleep_time=30): start_time = datetime.now() manager, task_queue, ht_task_queue, result_queue = \ SearchQueueManager.init_task_master_queue_manager() manager_tuple = (manager, task_queue, ht_task_queue, result_queue) localhost_ip = ssh.get_host_ip() isc_tasks_cfg = ITaskConfig(isc_config_file) isc_tasks = isc_tasks_cfg.isc_tasks for itask in isc_tasks: itask.init_task_numbers() isnse.clear_task_terminate_flag_files(*itask.k_m_n) ts_generator_pool = cls.init_task_slices_generator_pool(cls, isc_config_file) pre_pool = cls.init_pre_task_worker_pool(cls, isc_config_file, result_queue) working_hosts_number = 0 msg_text = "isc task master start, load %d isc tasks from %s" % (len(isc_tasks), isc_config_file) logging.info(msg_text) msg.send_message(msg_text) sleep_cnt = 0 online_hosts = set() progress_msg_cnt = 10 task_finish = False print_loop = 100 print_cnt = 0 while not task_finish: print_cnt += 1 if print_cnt == print_loop: cls.send_itasks_progress_info(cls, isc_tasks, manager_tuple, working_hosts_number, False) for it in isc_tasks: it.save_progress_info() sleep_cnt = 0 print_cnt = 0 if sleep_cnt == progress_msg_cnt: cls.send_itasks_progress_info(cls, isc_tasks, manager_tuple, working_hosts_number, False) for it in isc_tasks: it.save_progress_info() sleep_cnt = 0 print_cnt = 0 task_finish = cls.check_itasks_status(cls, isc_tasks, online_hosts, manager_tuple, working_hosts_number) if result_queue.empty(): time.sleep(sleep_time) sleep_cnt += 1 continue whn_diff = cls.process_result_queue(cls, result_queue, isc_tasks) whn_number = whn_diff[0] host_ip = whn_diff[1] working_hosts_number += whn_number if whn_number == 1: if host_ip != localhost_ip: online_hosts.add(host_ip) cls.update_nse_files_to_new_host(host_ip, isc_tasks) elif whn_number == -1: if host_ip != localhost_ip: online_hosts.remove(host_ip) ts_generator_pool.join() pre_pool.join() RawIConditionSearchWorker.send_worker_terminate_info(RawIConditionSearchWorker, localhost_ip, result_queue) while working_hosts_number > 0: if sleep_cnt == 10: cls.send_itasks_progress_info(cls, isc_tasks, manager_tuple, working_hosts_number, True) sleep_cnt = 0 if result_queue.empty(): time.sleep(sleep_time) sleep_cnt += 1 continue whn_diff = cls.process_result_queue(cls, result_queue, isc_tasks) working_hosts_number += whn_diff[0] end_time = datetime.now() msg_text = "isc tasks finish, running time: %s" % str(end_time - start_time) logging.info(msg_text) msg.send_message(msg=msg_text) for it in isc_tasks: it.task_finish() msg_text = it.get_final_detail_progress_info() logging.info(msg_text) msg.send_message(msg=msg_text) # attached_files.append(it.result_file) return isc_tasks
def init_kmn_isc_task_master_from_config( cls, isc_config_file="isets-tasks.json", sleep_time=30): manager, task_queue, ht_task_queue, result_queue = \ SearchQueueManager.init_task_master_queue_manager() manager_tuple = (manager, task_queue, ht_task_queue, result_queue) localhost_ip = ssh.get_host_ip() isc_tasks_cfg = ITaskConfig(isc_config_file) isc_tasks = isc_tasks_cfg.isc_tasks result_record = list() for itask in isc_tasks: isnse.clear_task_terminate_flag_files(*itask.k_m_n) i4_iset_size = len(itask.meta_data.search_i4_composed_iset_ids) file = i4u.get_kmn_i4_all_result_file(*itask.k_m_n) if os.path.exists(file): os.remove(file) record = [2**i4_iset_size - 1, 0, list(), file] result_record.append(record) ts_generator_pool = cls.init_task_slices_generator_pool( cls, isc_config_file) pre_task_pool = cls.init_pre_task_worker_pool(cls, isc_config_file, result_queue) working_hosts_number = 0 msg_text = "isc task master start, load %d isc tasks from %s" % ( len(isc_tasks), isc_config_file) logging.info(msg_text) msg.send_message(msg_text) sleep_cnt = 0 online_hosts = set() progress_msg_cnt = 10 task_finish = False print_loop = 10 print_cnt = 0 while not task_finish: print_cnt += 1 if print_cnt == print_loop: cls.send_itasks_progress_info(cls, result_record, manager_tuple, working_hosts_number, False) sleep_cnt = 0 print_cnt = 0 if sleep_cnt == progress_msg_cnt: cls.send_itasks_progress_info(cls, result_record, manager_tuple, working_hosts_number, False) sleep_cnt = 0 print_cnt = 0 task_finish = cls.check_i4_tasks_status(cls, result_record) if result_queue.empty(): time.sleep(sleep_time) sleep_cnt += 1 continue whn_diff = cls.process_i4_result_queue(cls, result_queue, result_record) whn_number = whn_diff[0] host_ip = whn_diff[1] working_hosts_number += whn_number if whn_number == 1: if host_ip != localhost_ip: online_hosts.add(host_ip) elif whn_number == -1: if host_ip != localhost_ip: online_hosts.remove(host_ip) ts_generator_pool.join() pre_task_pool.join() I4SearchWorker.send_worker_terminate_info(I4SearchWorker, localhost_ip, result_queue) while working_hosts_number > 0: if sleep_cnt == 10: cls.send_itasks_progress_info(cls, result_record, manager_tuple, working_hosts_number, True) sleep_cnt = 0 if result_queue.empty(): time.sleep(sleep_time) sleep_cnt += 1 continue whn_diff = cls.process_i4_result_queue(cls, result_queue, result_record) working_hosts_number += whn_diff[0] msg_text = "isc tasks finish!" logging.info(msg_text) msg.send_message(msg=msg_text) cls.send_itasks_progress_info(cls, result_record, manager_tuple, working_hosts_number, True) return isc_tasks