package main
|
|
import (
|
"basic.com/CloudAI/protomsg.git/analysis"
|
"fmt"
|
"google.golang.org/grpc"
|
"net"
|
"ruleModelEngine/api/analysisApi"
|
"ruleModelEngine/cache"
|
"ruleModelEngine/config"
|
"ruleModelEngine/db"
|
"ruleModelEngine/task"
|
|
//"ruleModelEngine/task"
|
|
//"annotation_service/db"
|
"basic.com/valib/logger.git"
|
"flag"
|
"ruleModelEngine/rule"
|
"time"
|
)
|
|
var env = flag.String("app", "app", "read database info")
|
|
func init() {
|
config.Init(*env)
|
var logFile = config.LogConf.Path + "annotation_service.log"
|
logger.InitLogger(logFile, config.LogConf.Level, config.LogConf.MaxSize, config.LogConf.MaxBackups, config.LogConf.MaxAge)
|
logger.Info("loginit success !")
|
dbErr := db.ConnectDB()
|
if dbErr != nil {
|
logger.Error("数据库连接失败", dbErr)
|
return
|
}
|
logger.Info("ConnectDB success !")
|
cacheErr := cache.DeviceCacheInit()
|
if cacheErr != nil {
|
logger.Error("设备表缓存失败", cacheErr)
|
return
|
}
|
logger.Info("cache device success !")
|
}
|
|
func initApiServer() {
|
ln, err := net.Listen("tcp", config.Api.Host+":"+config.Api.Port)
|
if err != nil {
|
logger.Fatal("grpc server init error: %v", err.Error())
|
//panic(fmt.Sprintf("grpc server init error: %v", err.Error()))
|
}
|
s := grpc.NewServer()
|
analysis.RegisterAnalysisServiceServer(s, &analysisApi.Server{})
|
err = s.Serve(ln)
|
if err != nil {
|
logger.Fatal("grpc server init error: %v", err.Error())
|
//panic(fmt.Sprintf("grpc server init error: %v", err.Error()))
|
}
|
}
|
|
func main() {
|
//db.UpdatePersonStatusByIds()
|
immediate := flag.Bool("immediate", true, "whether to execute immediately")
|
flag.Parse()
|
|
if *immediate {
|
logger.Info("Executing immediately...")
|
rule.ExecuteTask()
|
}
|
r, _ := db.QueryByDays(3)
|
for _, id := range r {
|
task.TaskAnalysisService(id)
|
}
|
fmt.Println("ids: ", len(r))
|
return
|
//task.TaskAnalysisService("3407b20e-6343-4832-88fa-a8e986552532")
|
go initApiServer()
|
//return
|
now := time.Now()
|
next := time.Date(now.Year(), now.Month(), now.Day()+1, 1, 0, 0, 0, now.Location())
|
duration := next.Sub(now)
|
timer := time.NewTimer(duration)
|
logger.Info("The program has started and will execute at one o'clock in the early morning every night.")
|
for {
|
<-timer.C
|
logger.Info("Executing at 1 AM...")
|
rule.ExecuteTask()
|
next = next.Add(24 * time.Hour)
|
timer.Reset(next.Sub(time.Now()))
|
}
|
|
}
|