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)
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