def __init__(self, id, worker, tickets=1000000): self.id = id self.incoming_queues = {} self.runnable_queues = {} for scheduling_class in worker.scheduling_classes.keys(): self.incoming_queues[scheduling_class] = Queue.Queue() self.runnable_queues[scheduling_class] = Queue.Queue() self.reference_cache = {} self.task_graph = LocalTaskGraph(worker.execution_features, runnable_queues=self.runnable_queues) self.active_or_queued_tasksets = 0 self.running_tasks = 0 self.active_tasksets = {} self.tickets = tickets self.job_aborted = False self._tasksets_lock = threading.Lock() self.task_cost = INITIAL_TASK_COST
def __init__(self, root_task_descriptor, block_store, master_proxy, execution_features, worker): self._lock = Lock() self.task_records = [] self.current_task = None self.current_td = None self.block_store = block_store self.master_proxy = master_proxy self.execution_features = execution_features self.worker = worker self.reference_cache = dict([ (ref.id, ref) for ref in root_task_descriptor["inputs"] ]) self.initial_td = root_task_descriptor self.task_graph = LocalTaskGraph(execution_features, [self.initial_td["task_id"]]) self.job_output = LocalJobOutput(self.initial_td["expected_outputs"]) for ref in self.initial_td["expected_outputs"]: self.task_graph.subscribe(ref, self.job_output) self.task_graph.spawn_and_publish([self.initial_td], self.initial_td["inputs"])