package main import ( "context" "datart/config" "datart/data" "datart/route" "os" "os/signal" "strconv" "syscall" "time" "github.com/gin-gonic/gin" ) func main() { signalChan := make(chan os.Signal, 1) signal.Notify(signalChan, syscall.SIGINT, syscall.SIGTERM) // gin.SetMode(gin.ReleaseMode) engine := gin.Default() // engine := gin.New() route.LoadRoute(engine) processes := data.NewProcesses() processes.StartDataProcessing() go func() { port := strconv.Itoa(config.Conf().ServerConf().GetPort()) if err := engine.Run(":" + port); err != nil { panic(err) } }() <-signalChan ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) defer cancel() processes.Cancel(ctx) }