Эх сурвалжийг харах

feat:增量id 及 配置时间

wangshan 2 жил өмнө
parent
commit
ebbb5f72d5

+ 6 - 1
csrSync/config.go

@@ -13,6 +13,11 @@ type (
 			MaxIdle     int    `json:"maxidle"`
 			MaxLeftTime int    `json:"maxleft"`
 		} `json:"tiDb"`
-		Bath int
+		Bath          int   `json:"bath"`          //增量批量查询数据量
+		Chan          int   `json:"chan"`          //并发通道数量
+		PollCount     int   `json:"pollCount"`     //限制轮询次数
+		WaitingTime   int   `json:"waitingTime"`   //排队等待时间 单位秒
+		DoingTime     int   `json:"doingTime"`     //语音识别中 等待时间 单位秒
+		VoiceRecordId int64 `json:"voiceRecordId"` //增量id
 	}
 )

+ 6 - 1
csrSync/config.json

@@ -10,5 +10,10 @@
 		"maxidle": 40,
 		"maxleft": 40
 	},
-	"bath": 100
+	"bath": 100,
+	"chan": 5,
+	"pollCount": 5,
+	"waitingTime": 60,
+	"doingTime": 60,
+	"voiceRecordId": 1
 }

+ 13 - 12
csrSync/job.go

@@ -11,12 +11,6 @@ import (
 	"time"
 )
 
-var (
-	client    *monitor.Client
-	ch        = make(chan bool, 4)
-	pollCount = 5
-)
-
 func job() {
 	log.Println("语音识别定时任务开始")
 	credential := common.NewCredential(
@@ -26,17 +20,24 @@ func job() {
 	cpf := profile.NewClientProfile()
 	cpf.HttpProfile.Endpoint = "monitor.tencentcloudapi.com"
 	client, _ = monitor.NewClient(credential, "ap-shanghai", cpf)
+	sql := `SELECT id,MonitorFilename FROM voice_record WHERE %s MonitorFilename <> '' AND  ISNULL(callText) ORDER  BY createTime DESC `
+	addSql := ``
+	if cfg.VoiceRecordId > 0 {
+		addSql = fmt.Sprintf("id > %d  AND ", cfg.VoiceRecordId)
+	}
+	sql = fmt.Sprintf(sql, addSql)
 	TiDb.SelectByBath(cfg.Bath, func(l *[]map[string]interface{}) bool {
 		if len(*l) > 0 {
-			log.Println(fmt.Sprintf("此次处理数据量:%d", len(*l)))
+			cfg.VoiceRecordId = util.Int64All((*l)[0]["id"])
+			log.Println(fmt.Sprintf("此次处理数据量:%d,最大id:%d", len(*l), cfg.VoiceRecordId))
 			for _, v := range *l {
 				ch <- true
 				go FormatData(v)
 			}
 		}
 		return true
-	}, `SELECT id,MonitorFilename FROM voice_record WHERE MonitorFilename <> '' AND  ISNULL(callText) ORDER  BY createTime DESC `) // 需要加where进行增量
-	log.Println("语音识别定时任务结束")
+	}, sql) // 需要加where进行增量
+	log.Println("语音识别定时任务结束,id:", cfg.VoiceRecordId)
 }
 
 // FormatData 获取TaskId 并获取录音识别结果
@@ -70,7 +71,7 @@ func FormatData(data map[string]interface{}) {
 	requests.TaskId = taskId
 L:
 	for {
-		if pollTime[recordId] > pollCount {
+		if pollTime[recordId] > cfg.PollCount {
 			//轮询大于pollCount,则跳出,防止死循环
 			break L
 		}
@@ -87,10 +88,10 @@ L:
 				break L
 			}
 		case "waiting":
-			time.Sleep(500 * time.Millisecond)
+			time.Sleep(time.Duration(cfg.WaitingTime) * time.Second)
 			continue L
 		case "doing":
-			time.Sleep(200 * time.Millisecond)
+			time.Sleep(time.Duration(cfg.DoingTime) * time.Second)
 			continue L
 		case "failed":
 			if updateVoiceRecord(*r.Response.Data.ErrorMsg, recordId) {

+ 9 - 3
csrSync/main.go

@@ -3,6 +3,7 @@ package main
 import (
 	"flag"
 	"fmt"
+	monitor "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/asr/v20190614"
 	"log"
 
 	"app.yhyue.com/moapp/jybase/common"
@@ -11,15 +12,20 @@ import (
 )
 
 var (
-	cfg  = new(Config)
-	TiDb *mysql.Mysql
-	mode = flag.Int("m", 1, "")
+	cfg    = new(Config)
+	TiDb   *mysql.Mysql
+	mode   = flag.Int("m", 1, "")
+	client *monitor.Client
+	ch     chan bool
 )
 
 func main() {
 	flag.Parse()
 	common.ReadConfig(&cfg)
 	log.Println("cfg ", cfg)
+	//
+	ch = make(chan bool, cfg.Chan)
+	//
 	TiDb = &mysql.Mysql{
 		Address:      cfg.TiDb.Host + ":" + fmt.Sprint(cfg.TiDb.Port),
 		UserName:     cfg.TiDb.User,