task_manager.load_tasks(task_file=arguments.task_list_file) task = task_manager.get_next_task() while task is not None: sleep(1) if executor_manager.has_valid_executor_for_task(task): executor = executor_manager.get_executor_for_task(task) if executor is not None: worker_thread = Thread(target=executor_run_task, args=(executor, task)) worker_thread.start() else: # print "Put task [%s] back to task pool" % task.name task_manager.put_back_to_task_pool(task) task = task_manager.get_next_task() else: print "Mark task [%s] as cannot be executed" % task.name task_manager.mark_task_as_cannot_be_executed(task) task = task_manager.get_next_task() continue print "All tasks have been distributed, waitting for task running finish" executor_manager.wait_for_executor_finish_task() print "All tasks finished running" print "Start dumping executor status" log_dir = arguments.task_list_file[:arguments.task_list_file.rfind("/") + 1] executor_log_file = log_dir + EXECUTOR_STATE_FILE executor_manager.dump_executor_state(executor_log_file)