package main import ( "basic.com/CloudAI/protomsg.git/analysis" "google.golang.org/grpc" "net" "ruleModelEngine/api/analysisApi" "ruleModelEngine/cache" "ruleModelEngine/config" "ruleModelEngine/db" //"ruleModelEngine/task" //"annotation_service/db" "basic.com/valib/logger.git" "flag" "ruleModelEngine/rule" "time" ) var env = flag.String("rulemodelengine", "rulemodelengine", "read database info") func init() { config.Init(*env) var logFile = config.LogConf.Path + "rule_model_engine.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())) } }