Exemplo n.º 1
0
    def __init__(self, id, root_task, job_dir, state, job_pool, job_options):
        self.id = id
        self.root_task = root_task
        self.job_dir = job_dir

        self.job_pool = job_pool

        self.history = []

        self.state = state

        self.runnable_queue = Queue.Queue()

        self.global_queues = {}

        self.result_ref = None

        self.task_journal_fp = None

        self.job_options = job_options

        self._lock = Lock()
        self._condition = Condition(self._lock)

        # Counters for each task state.
        self.task_state_counts = {}
        for state in TASK_STATES.values():
            self.task_state_counts[state] = 0

        self.all_tasks = RunningAverage()
        self.all_tasks_by_type = {}

        try:
            self.scheduling_policy = get_scheduling_policy(
                self.job_options['scheduler'])
        except KeyError:
            self.scheduling_policy = LocalitySchedulingPolicy()

        self.task_graph = JobTaskGraph(self, self.runnable_queue)

        self.workers = {}
        self.job_pool.worker_pool.notify_job_about_current_workers(self)