package tasks import ( "context" "time" "vamicro/device-client/models" "vamicro/device-client/service" "basic.com/valib/logger.git" ) var ( devCtx context.Context devCancel context.CancelFunc ) func Start() { // 启动设备信息上报 go deviceInfoReportTask() } func ResetDeviceInfoReportTask() { devCancel() } func deviceInfoReportTask() { devCtx, devCancel = context.WithCancel(context.Background()) interval := models.ReportConfig.Interval if interval == 0 { interval = 10 } logger.Infof("start device info report task, server:%s interval:%d.", models.ReportConfig.ServerAddr, interval) ticker := time.NewTicker(1 * time.Second) for { select { case <-devCtx.Done(): logger.Warn("task exit!!") go deviceInfoReportTask() return case <-ticker.C: logger.Debug("report device info.") err := service.ReportDeviceInfo() if err != nil { logger.Warn(err.Error()) } ticker.Reset(time.Duration(interval) * time.Second) } } }