浏览代码

代理服务

huangxingxing 4 月之前
父节点
当前提交
370aa5e18f
共有 1 个文件被更改,包括 69 次插入1 次删除
  1. 69 1
      src/main/java/com/miniframe/bisiness/mdo/MDO0039Service.java

+ 69 - 1
src/main/java/com/miniframe/bisiness/mdo/MDO0039Service.java

@@ -168,7 +168,8 @@ public class MDO0039Service extends MDO0039BaseModel implements ExecProcessFlow
 			TemplateGenerator.createProblemXml(pid,provo);
 			//创建run.py
 			TemplateGenerator.createRunpy(pid);
-			run(pid,pro.getStype());
+//			run(pid,pro.getStype());
+			runDl(pid,pro.getStype());
 		}
 
 
@@ -394,7 +395,73 @@ public class MDO0039Service extends MDO0039BaseModel implements ExecProcessFlow
 			return null;
 		});
 	}
+	//异步执行
+	@SneakyThrows
+	public void runDl(String pid ,String stype)throws Exception{
+		MdoProComvalMapper comvalDao =UtilTools.getBean(MdoProComvalMapper.class);
+		MdoProComvalSQLBuilder sb =new MdoProComvalSQLBuilder();
+		MdoProComvalSQLBuilder.Criteria sc = sb.createCriteria();
+		sc.andPidEqualTo(pid);
+		comvalDao.deleteByExample(sb);
+
+		FileMonitor surrMonitor = new FileMonitor(1000);
+		SurromdaoFileListener t= new SurromdaoFileListener(pid);
+		surrMonitor.monitor("/cephfs/mdo/"+pid+"/in/myid_0", t);
+		surrMonitor.start();
+
+
+		LogService.addLog(pid,"求解——————————————————开始");
+		DockerExe.stopDocker(pid);
+		DockerExe.runMdo3(pid);
+		final int[] con = {0};
+		final String[] line = {""};
+		CompletableFuture<Void> cf = CompletableFuture.supplyAsync(()-> {try {
+			DockerExe.getDockerLogs(pid,new ResultCallback.Adapter<Frame>() {
+				@Override
+				public void onNext(Frame frame) {
+					if(con[0] <100){
+						line[0]+=new String(frame.getPayload());
+						con[0]++;
+					}else{
+						LogService.addLog(pid, line[0]);
+						line[0]="";
+						con[0] =0;
+					}
+					LogService.addLog(pid, new String(frame.getPayload()));
+					System.out.print(new String(frame.getPayload()));
+					super.onNext(frame);
+				}
+
+				@Override
+				public void onError(Throwable throwable) {
+					System.err.println("日志获取失败");
+					LogService.addLog(pid, line[0]);
+					throwable.printStackTrace();
+					super.onError(throwable);
+				}
+				@Override
+				public void onComplete() {
+					System.out.println("日志获取完成");
+					LogService.addLog(pid, line[0]);
+					super.onComplete();
+				}
+			});
 
+
+			LogService.addLog(pid,"求解——————————————————成功");
+		} catch (Exception e) {
+			LogService.addLog(pid,"求解——————————————————失败");
+			e.printStackTrace();
+		}
+			try {
+				surrMonitor.stop();
+				SurromdaoFileRead.readFile(new File("/cephfs/mdo/"+pid+"/in/myid_0/surromdao_history_all.dat"),pid);
+			} catch (Exception e) {
+				e.printStackTrace();
+			}
+			return null;
+		});
+	}
 	//异步执行
 	@SneakyThrows
 	public void run(String pid ,String stype)throws Exception{
@@ -404,6 +471,7 @@ public class MDO0039Service extends MDO0039BaseModel implements ExecProcessFlow
 		sc.andPidEqualTo(pid);
 		comvalDao.deleteByExample(sb);
 
+
 		LogService.addLog(pid,"求解——————————————————开始");
 		DockerExe.stopDocker(pid);
 		DockerExe.runMdo(pid);