Exemple #1
0
    async def handle(self, task: Task, args: list):
        """
        Method for handling compilation and scheduling of the incoming task
        :param task: incoming task
        :param args: additional arguments for compilation
        :raises CmdHandlerError
        :return: nothing
        """
        self.__set_task_log(task)

        task = await self.__streams_handler.recv_file(task)

        task.set_status(TaskStatus.COMPILING)
        await self.__io_handler.save_task(task)
        await self.__streams_handler.inform_client(task, 'Task is compiling')

        try:
            await self.__compilation_handler.handle_compilation(task, args)
            if self.__template_resolver.sched_uses_desc():
                await self.__create_task_passport(task)
            await self.__run_task(task)

            # Update HPC info on the web application side
            await self.__hpc_stats_handler.handle(task, [])
        except Exception as e:
            raise CmdHandlerError(Command.RUN, e)
Exemple #2
0
    async def __cancel_task(self, task: Task, args: list):
        """
        Handle 'cancel' command

        :param task: related task
        :param args: additional arguments
        :return: None
        """
        cancel_command = self.__template_resolver.get_cancel_for_task(task)
        await self.exec_shell_command(cancel_command, args)
        task.set_status(TaskStatus.CANCELLED)

        return None