rasa:训练和启动接口添加写入日志功能

dev_v1.0.1
xueqingkun 2 years ago
parent 290dd8abf1
commit c38c926a5b

@ -58,10 +58,22 @@ public class RasaModelInfo implements Serializable {
@ApiModelProperty("启动状态")
private Integer serverStatus;
@ApiModelProperty("执行shell命令")
@ApiModelProperty("执行train shell命令")
@TableField(typeHandler = StringListTypeHandler.class)
private List<String> trainCmd;
@ApiModelProperty("执行run shell命令")
@TableField(typeHandler = StringListTypeHandler.class)
private List<String> cmd;
private List<String> runCmd;
@ApiModelProperty("训练日志")
private String trainLog;
@ApiModelProperty("运行日志")
private String runLog;
/**

@ -12,15 +12,19 @@
<result property="tranStatus" column="tran_status" jdbcType="INTEGER"/>
<result property="serverStatus" column="server_status" jdbcType="INTEGER"/>
<result property="createUserId" column="create_user_id" jdbcType="VARCHAR"/>
<result property="cmd" column="cmd" jdbcType="ARRAY" typeHandler="com.supervision.handler.StringListTypeHandler"/>
<result property="trainCmd" column="train_cmd" jdbcType="ARRAY" typeHandler="com.supervision.handler.StringListTypeHandler"/>
<result property="runCmd" column="run_cmd" jdbcType="ARRAY" typeHandler="com.supervision.handler.StringListTypeHandler"/>
<result property="trainLog" column="train_log" jdbcType="VARCHAR"/>
<result property="runLog" column="run_log" jdbcType="VARCHAR"/>
<result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
<result property="updateUserId" column="update_user_id" jdbcType="VARCHAR"/>
<result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
</resultMap>
<sql id="Base_Column_List">
id,model_id,description,
port,tran_status,server_status,cmd,create_user_id,create_time,
id,model_id,description,port,tran_status,server_status,
train_cmd,run_cmd,train_log,run_log,
create_user_id,create_time,
update_user_id,update_time
</sql>

@ -31,7 +31,7 @@ public class RasaModelManager {
// 1. 查找出记录表中存活的服务
List<RasaModelInfo> rasaModelInfos = rasaModeService.listActive();
List<RasaModelInfo> activeRasaList = rasaModelInfos.stream().filter(info -> CollectionUtil.isNotEmpty(info.getCmd()) && null != info.getPort()).collect(Collectors.toList());
List<RasaModelInfo> activeRasaList = rasaModelInfos.stream().filter(info -> CollectionUtil.isNotEmpty(info.getRunCmd()) && null != info.getPort()).collect(Collectors.toList());
if (CollectionUtil.isEmpty(activeRasaList)){
log.info("wakeUpInterruptService: no rasa service need wake up ...");
@ -42,10 +42,12 @@ public class RasaModelManager {
for (RasaModelInfo rasaModelInfo : activeRasaList) {
if (!PortUtil.portIsActive(rasaModelInfo.getPort())){
try {
rasaModelInfo.getCmd().add(String.valueOf(rasaModelInfo.getPort()));
List<String> outMessageList = rasaCmdService.execCmd(rasaModelInfo.getCmd(),
rasaModelInfo.getRunCmd().add(String.valueOf(rasaModelInfo.getPort()));
List<String> outMessageList = rasaCmdService.execCmd(rasaModelInfo.getRunCmd(),
s -> StrUtil.isNotBlank(s) && s.contains(RasaConstant.RUN_SUCCESS_MESSAGE), 300);
rasaModelInfo.setTrainLog(String.join("\r\n",outMessageList));
rasaModeService.updateById(rasaModelInfo);
if (!runIsSuccess(outMessageList)){
log.info("wakeUpInterruptServer: restart server port for {} failed,details info : {}",rasaModelInfo.getPort(),String.join("\r\n",outMessageList));
}
@ -53,7 +55,7 @@ public class RasaModelManager {
log.info("wakeUpInterruptServer: restart server port for {} failed",rasaModelInfo.getPort());
throw new RuntimeException(e);
}
log.info("wakeUpInterruptServer: restart server port for {} success",rasaModelInfo.getPort());
log.info("wakeUpInterruptServer: restart server port for {} success ",rasaModelInfo.getPort());
}else {
log.info("wakeUpInterruptServer: port:{} is run..",rasaModelInfo.getPort());
}

@ -61,12 +61,14 @@ public class RasaCmdServiceImpl implements RasaCmdService {
public String trainExec(RasaCmdArgumentVo argument) throws ExecutionException, InterruptedException, TimeoutException {
// /rasa/v3_jiazhuangxian/domain.yml domain的路径应该是从zip文件中加压出来的文件的路径后面拼上/domain.yml
String domain = replaceDuplicateSeparator(String.join(File.separator,dataPath,argument.getModelId(),"domain.yml"));
// /rasa/v3_jiazhuangxian/ yml文件的路径应该是从zip文件中加压出来的文件的路径,在配置文件中配置
String localDataPath = replaceDuplicateSeparator(String.join(File.separator,dataPath,argument.getModelId()));
// /rasa/models 生成出来的模型的存放路径,也写在配置文件里面
String localModelsPath = replaceDuplicateSeparator(String.join(File.separator,modelsPath,argument.getModelId()));
List<String> cmds = ListUtil.toList(shellEnv, trainShell,config,localDataPath,domain,localModelsPath);
cmds.add(argument.getFixedModelName());
@ -75,14 +77,17 @@ public class RasaCmdServiceImpl implements RasaCmdService {
List<String> outMessage = execCmd(cmds, s -> StrUtil.isNotBlank(s) && s.contains(RasaConstant.TRAN_SUCCESS_MESSAGE), 300);
String outMessageString = String.join("\r\n", outMessage);
//保存 模型信息
RasaModelInfo rasaModelInfo = new RasaModelInfo();
rasaModelInfo.setModelId(argument.getModelId());
rasaModelInfo.setTranStatus(trainIsSuccess(outMessage)?1:0);
rasaModelInfo.setServerStatus(-1);
rasaModelInfo.setTrainCmd(cmds);
rasaModelInfo.setTrainLog(outMessageString);
rasaModeService.saveOrUpdateByModelId(rasaModelInfo);
return String.join("\r\n",outMessage);
return outMessageString;
}
@ -99,21 +104,24 @@ public class RasaCmdServiceImpl implements RasaCmdService {
// 2.1 -m 参数对应的值 /rasa/models/aaa1111.tar.gz 指run的模型的路径/rasa/models应该来自于配置文件和训练时的--out是同一配置项
// aaa1111.tar.gz这个前面的文件名应该是--fixed-model-name指定的.tar.gz是文件后缀代码拼接
String localPath = replaceDuplicateSeparator(String.join(File.separator,modelsPath,argument.getModelId(),argument.getFixedModelName()+".tar.gz"));
List<String> cmds = ListUtil.toList(shellEnv, runShell,localPath,endpoints,String.valueOf(port));
log.info("runExec cmd : {}",StrUtil.join(" ",cmds));
List<String> outMessageList = execCmd(cmds, s -> StrUtil.isNotBlank(s) && s.contains(RasaConstant.RUN_SUCCESS_MESSAGE), 300);
String outMessageString = String.join("\r\n", outMessageList);
// 3. 更新模型信息
RasaModelInfo rasaModelInfo = new RasaModelInfo();
rasaModelInfo.setModelId(argument.getModelId());
rasaModelInfo.setPort(port);
rasaModelInfo.setServerStatus(runIsSuccess(outMessageList)?1:0);
rasaModelInfo.setCmd(ListUtil.toList(shellEnv, runShell,localPath,endpoints));
rasaModelInfo.setRunCmd(ListUtil.toList(shellEnv, runShell,localPath,endpoints));
rasaModelInfo.setRunLog(outMessageString);
rasaModeService.saveOrUpdateByModelId(rasaModelInfo);
return String.join("\r\n",outMessageList);
return outMessageString;
}

Loading…
Cancel
Save