예제 #1
0
    def __init__(self,
                 tdef: 'TaskDef',
                 start_point: 'PointBase',
                 flow_label: Optional[str],
                 status: str = TASK_STATUS_WAITING,
                 is_held: bool = False,
                 submit_num: int = 0,
                 is_late: bool = False,
                 reflow: bool = True) -> None:

        self.tdef = tdef
        if submit_num is None:
            submit_num = 0
        self.submit_num = submit_num
        self.jobs: List[str] = []
        self.flow_label = flow_label
        self.reflow = reflow
        self.point = start_point
        self.identity: str = TaskID.get(self.tdef.name, self.point)

        self.reload_successor: Optional['TaskProxy'] = None
        self.point_as_seconds: Optional[int] = None

        self.is_manual_submit = False
        self.summary: Dict[str, Any] = {
            'submitted_time': None,
            'submitted_time_string': None,
            'started_time': None,
            'started_time_string': None,
            'finished_time': None,
            'finished_time_string': None,
            'logfiles': [],
            'platforms_used': {},
            'execution_time_limit': None,
            'job_runner_name': None,
            'submit_method_id': None,
            'flow_label': None
        }

        self.local_job_file_path: Optional[str] = None

        self.platform = get_platform()

        self.job_vacated = False
        self.poll_timer: Optional['TaskActionTimer'] = None
        self.timeout: Optional[float] = None
        self.try_timers: Dict[str, 'TaskActionTimer'] = {}
        self.non_unique_events = Counter()  # type: ignore # TODO: figure out

        self.clock_trigger_time: Optional[float] = None
        self.expire_time: Optional[float] = None
        self.late_time: Optional[float] = None
        self.is_late = is_late
        self.waiting_on_job_prep = True

        self.state = TaskState(tdef, self.point, status, is_held)

        # Determine graph children of this task (for spawning).
        self.graph_children = generate_graph_children(tdef, self.point)
예제 #2
0
    def __init__(self,
                 tdef,
                 start_point,
                 flow_label,
                 status=TASK_STATUS_WAITING,
                 is_held=False,
                 submit_num=0,
                 is_late=False,
                 reflow=True):
        self.tdef = tdef
        if submit_num is None:
            submit_num = 0
        self.submit_num = submit_num
        self.jobs = []
        self.flow_label = flow_label
        self.reflow = reflow
        self.point = start_point
        self.identity = TaskID.get(self.tdef.name, self.point)

        self.reload_successor = None
        self.point_as_seconds = None

        self.manual_trigger = False
        self.is_manual_submit = False
        self.summary = {
            'latest_message': '',
            'submitted_time': None,
            'submitted_time_string': None,
            'started_time': None,
            'started_time_string': None,
            'finished_time': None,
            'finished_time_string': None,
            'logfiles': [],
            'platforms_used': {},
            'execution_time_limit': None,
            'job_runner_name': None,
            'submit_method_id': None,
            'flow_label': None
        }

        self.local_job_file_path = None

        self.platform = get_platform()

        self.job_vacated = False
        self.poll_timer = None
        self.timeout = None
        self.try_timers = {}
        self.non_unique_events = Counter()

        self.clock_trigger_time = None
        self.expire_time = None
        self.late_time = None
        self.is_late = is_late
        self.waiting_on_job_prep = True

        self.state = TaskState(tdef, self.point, status, is_held)

        # Determine graph children of this task (for spawning).
        self.graph_children = generate_graph_children(tdef, self.point)
        if TASK_OUTPUT_SUCCEEDED in self.graph_children:
            self.state.outputs.add(TASK_OUTPUT_SUCCEEDED)

        if TASK_OUTPUT_FAILED in self.graph_children:
            self.failure_handled = True
        else:
            self.failure_handled = False