|
@@ -4,11 +4,13 @@ import api.common.pojo.po.scene.VehicleTypePO;
|
|
import api.common.util.FileUtil;
|
|
import api.common.util.FileUtil;
|
|
import api.common.util.LinuxUtil;
|
|
import api.common.util.LinuxUtil;
|
|
import api.common.util.StringUtil;
|
|
import api.common.util.StringUtil;
|
|
|
|
+import com.css.simulation.resource.video.configuration.redis.CustomRedisClient;
|
|
import com.css.simulation.resource.video.entity.VehicleEntity;
|
|
import com.css.simulation.resource.video.entity.VehicleEntity;
|
|
import com.css.simulation.resource.video.mapper.ConfigMapper;
|
|
import com.css.simulation.resource.video.mapper.ConfigMapper;
|
|
import com.css.simulation.resource.video.mapper.SimulationAutomaticProjectMapper;
|
|
import com.css.simulation.resource.video.mapper.SimulationAutomaticProjectMapper;
|
|
import com.css.simulation.resource.video.mapper.VehicleMapper;
|
|
import com.css.simulation.resource.video.mapper.VehicleMapper;
|
|
import com.css.simulation.resource.video.util.MinioUtil;
|
|
import com.css.simulation.resource.video.util.MinioUtil;
|
|
|
|
+import com.css.simulation.resource.video.util.OsUtil;
|
|
import io.minio.MinioClient;
|
|
import io.minio.MinioClient;
|
|
import lombok.SneakyThrows;
|
|
import lombok.SneakyThrows;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
@@ -30,6 +32,8 @@ import java.math.RoundingMode;
|
|
import java.nio.file.Files;
|
|
import java.nio.file.Files;
|
|
import java.nio.file.Paths;
|
|
import java.nio.file.Paths;
|
|
import java.util.Iterator;
|
|
import java.util.Iterator;
|
|
|
|
+import java.util.Set;
|
|
|
|
+import java.util.concurrent.TimeUnit;
|
|
|
|
|
|
@Service
|
|
@Service
|
|
@Slf4j
|
|
@Slf4j
|
|
@@ -59,11 +63,13 @@ public class VideoService {
|
|
@Value("${scheduler.esmini-command}")
|
|
@Value("${scheduler.esmini-command}")
|
|
private String esminiCommand;
|
|
private String esminiCommand;
|
|
@Value("${scheduler.python-command}")
|
|
@Value("${scheduler.python-command}")
|
|
- private String pythonCommand;
|
|
|
|
|
|
+ private String pythonCommand;
|
|
@Value("${scheduler.minio-path.project-result}")
|
|
@Value("${scheduler.minio-path.project-result}")
|
|
private String projectResultPathOfMinio;
|
|
private String projectResultPathOfMinio;
|
|
@Value("${minio.bucket-name}")
|
|
@Value("${minio.bucket-name}")
|
|
- private String bucketName;
|
|
|
|
|
|
+ private String bucketName;
|
|
|
|
+ @Resource
|
|
|
|
+ private CustomRedisClient customRedisClient;
|
|
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -71,6 +77,24 @@ public class VideoService {
|
|
*/
|
|
*/
|
|
@SneakyThrows
|
|
@SneakyThrows
|
|
public void generateVideo(String projectId, String projectType, String maxSimulationTime, String taskId) {
|
|
public void generateVideo(String projectId, String projectType, String maxSimulationTime, String taskId) {
|
|
|
|
+ final Set<String> cpuNodeParallelismKeys = customRedisClient.keys("cpu-node*");
|
|
|
|
+ // 获取本地 hostname
|
|
|
|
+ final String hostName = OsUtil.getHostName();
|
|
|
|
+ int parallelism = 0;
|
|
|
|
+ String cpuNodeParallelismKey = "cpu-node:simulation003:parallelism";
|
|
|
|
+ for (String tempCpuNodeParallelismKey : cpuNodeParallelismKeys) {
|
|
|
|
+ if (tempCpuNodeParallelismKey.contains(hostName)) {
|
|
|
|
+ cpuNodeParallelismKey = tempCpuNodeParallelismKey;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ // 检查是否有并行度可用
|
|
|
|
+ while (parallelism < 1) {
|
|
|
|
+ parallelism = Integer.parseInt(customRedisClient.get(cpuNodeParallelismKey));
|
|
|
|
+ TimeUnit.SECONDS.sleep(7);
|
|
|
|
+ }
|
|
|
|
+ customRedisClient.set(cpuNodeParallelismKey, (parallelism - 1) + "");
|
|
|
|
+
|
|
|
|
+
|
|
String rootDirectoryPathOfMinio = projectResultPathOfMinio + projectId + "/" + taskId + "/";
|
|
String rootDirectoryPathOfMinio = projectResultPathOfMinio + projectId + "/" + taskId + "/";
|
|
String xodrPathOfMinio = rootDirectoryPathOfMinio + taskId + ".xodr";
|
|
String xodrPathOfMinio = rootDirectoryPathOfMinio + taskId + ".xodr";
|
|
String osgbPathOfMinio = rootDirectoryPathOfMinio + taskId + ".osgb";
|
|
String osgbPathOfMinio = rootDirectoryPathOfMinio + taskId + ".osgb";
|
|
@@ -128,6 +152,7 @@ public class VideoService {
|
|
|
|
|
|
//* -------------------------------- 删除临时文件 --------------------------------
|
|
//* -------------------------------- 删除临时文件 --------------------------------
|
|
LinuxUtil.execute(removeAll);
|
|
LinuxUtil.execute(removeAll);
|
|
|
|
+ customRedisClient.set(cpuNodeParallelismKey, (Integer.parseInt(customRedisClient.get(cpuNodeParallelismKey)) + 1) + "");
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|