コード例 #1
0
ファイル: dispatcher.py プロジェクト: flowlsj/task_dispatcher
    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)