def _convert_user_params_to_tasks(user_params, job):
        """

        :param model.UserParameters.UserParameters user_params: UserParameters
        :param uuid.UUID job: uuid.UUID
        :return: model.Task.Task[]
        """
        tasks = []
        compute_parameters = ComputeParameters(user_params.num_samples,
                                               user_params.viscosity,
                                               user_params.speed,
                                               user_params.time, server_ip())
        angles = numpy.arange(user_params.min_angle, user_params.max_angle,
                              user_params.step)
        for angle in angles:
            model_parameters = ModelParameters(user_params.naca4, job, angle,
                                               user_params.num_nodes,
                                               user_params.refinement_level)
            task = Task(None, None, model_parameters, compute_parameters, None)
            tasks.append(task)
        model_parameters = ModelParameters(user_params.naca4, job,
                                           user_params.max_angle,
                                           user_params.num_nodes,
                                           user_params.refinement_level)
        task = Task(None, None, model_parameters, compute_parameters, None)
        tasks.append(task)
        return tasks
Exemplo n.º 2
0
    def create(self, task_number):
        self.name = "RW%s" % task_number
        entry_task = Task(0, [], [])
        exit_task = Task(task_number - 1, [], [])

        self.task_list.append(entry_task)

        surplus_task_num = task_number - 2
        last_layer = [entry_task.task_id]
        max_id = 0

        while surplus_task_num != 0:
            current_layer_task_num = random.randint(constant.MIN_TASK_NUM, constant.MAX_TASK_NUM)

            # 创建当层任务列表
            current_layer_task_id_list = []

            if current_layer_task_num > surplus_task_num:
                current_layer_task_num = surplus_task_num

            for i in range(0, current_layer_task_num):
                task = Task(max_id + 1, [], [])
                self.task_list.append(task)
                current_layer_task_id_list.append(task.task_id)
                max_id += 1

            # 给上层任务随机添加后继任务
            for task_id in last_layer:
                task = self.get_task_by_id(task_id)

                random_num = random.randint(0, current_layer_task_num - 1)
                task_id_temp = current_layer_task_id_list[random_num]
                task.suc_task_id_list.append(task_id_temp)

                task_temp = self.get_task_by_id(task_id_temp)
                task_temp.pre_task_id_list.append(task_id)

            # 判断当前层的任务是否都有前驱,如果没有,随机添加前驱任务
            for task_id in current_layer_task_id_list:
                task = self.get_task_by_id(task_id)
                if task.pre_task_id_list is None or len(task.pre_task_id_list) == 0:
                    random_num = random.randint(0, len(last_layer) - 1)
                    task_id_temp = last_layer[random_num]
                    task_temp = self.get_task_by_id(task_id_temp)
                    task_temp.suc_task_id_list.append(task.task_id)
                    task.pre_task_id_list.append(task_id_temp)

            surplus_task_num -= current_layer_task_num
            last_layer = current_layer_task_id_list

        for task_id in last_layer:
            task = self.get_task_by_id(task_id)
            task.suc_task_id_list.append(exit_task.task_id)
            exit_task.pre_task_id_list.append(task_id)

        self.task_list.append(exit_task)
Exemplo n.º 3
0
    def create_classic_wf(self, file_path):
        task_dict = dict()
        file = open(file_path, "r")
        line = file.readline()
        while line:
            # 首先去除换行符,真讨厌
            line = line.strip('\n')
            # 以空格分割一行,分割后的每一项都是task_id
            line_split = line.split(" ")

            # 如果当前task任务不在task_key_value中,那么new一个task
            for task_id in line_split:
                if task_id not in task_dict.keys():
                    task = Task(task_id, [], [])
                    task_dict[task_id] = task

            # 记录每一行的第一个task
            task = task_dict[line_split[0]]
            # 删除当前的task_id,那么剩余的line_split中的task都上它的后继
            line_split.pop(0)

            for task_id in line_split:
                task_temp = task_dict[task_id]
                task_temp.pre_task_id_list.append(task.task_id)
                task.suc_task_id_list.append(task_id)

            line = file.readline()

        task_dict = WorkFlow.sort_dict_by_key(task_dict)
        # 最后按照int类型的key值进行排序
        self.task_list = task_dict.values()
Exemplo n.º 4
0
def put_task_in_queue():
    """
    route for new task
    :return: int id task
    """
    new_idx = next(idx_gen)
    task = Task(new_idx)
    r_new_tasks.set(new_idx, pickle.dumps(task))
    return str(new_idx)
Exemplo n.º 5
0
def create_task_for_params(connection, name, state_id, user_id):
    state = connection.query(State).get(state_id)
    user = connection.query(User).get(user_id)
    task = Task(task_name=name, active_state=state, user=user)
    connection.add(task)
    connection.commit()