def post(self): in_arg = dict(mesh_status_parser.parse_args()) mesh_id = in_arg.get("meshId", None) if mesh_id is None: return create_resp(1, msg="we didn't get meshId", result=None) result = DB.query_mesh_status(mesh_id) if result is None: return create_resp(1, msg="没有该网格作业的状态", result=None) slurm_id = result["slurmId"] status = SlurmDB().query_job_status(slurm_id) if status == -2: return create_resp(1, msg="slurm中没有对应的作业", result=None) result["slurmStatus"] = status result["currentStep"] = result["totalStep"] - 1 if \ result["currentStep"] > result["totalStep"] else result["currentStep"] return create_resp(0, msg="success", result=result)
def stop_actions(cls, mesh_id): ms = DB.query_mesh_status(mesh_id) if ms is None: pass slurm_id = ms["slurmId"] status = SlurmDB().query_job_status(slurm_id) if status is 0 or status is 1: mesh_dir = DB().query_mesh_dir(mesh_id) if mesh_dir is not None: DIR_MONITOR.kill_watcher(mesh_dir) Slurm.kill_job(slurm_id) core_logger.info( f"杀死网格作业 | slurm_id: {slurm_id} | mesh_id: {mesh_id}") return 0, "success" else: return 2, "查询网格错误" else: return 1, "mesh job has finished!"
def on_modified(self, event): res_file = event.src_path save_offset = 0 line_matches = 0 for line, offset in offset_file(res_file, offset=self.offset): if re.search("Finished", line): line_matches += 1 if re.search("End", line): DB.compete_mesh_step(mesh_id=self.mesh_id) return save_offset = offset self.current_step += line_matches self.offset = save_offset if save_offset > 0 else self.offset res = DB.query_mesh_status(self.mesh_id) if res == {}: convert_logger.critical(f"mesh_status中没有对应的mesh | {self.mesh_id}") return else: DB.update_mesh_status(self.mesh_id, current_step=self.current_step)