1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- package main
- import (
- "context"
- "fmt"
- "log"
- "net/http"
- "os"
- "os/signal"
- "time"
- "surveyService/cache"
- "surveyService/model"
- "surveyService/router"
- "surveyService/util/validator"
- "github.com/joho/godotenv"
- "gogs.uu.mdfitnesscao.com/cuiguohai/sdk"
- )
- func main() {
- // 加载dotEnv环境
- loadEnvErr := godotenv.Load()
- if loadEnvErr != nil {
- fmt.Println("ENV环境加载Error")
- return
- }
- // 开始初始化数据库
- model.Construct(true)
- // 开始初始化缓存
- cache.InitRedis()
- // 初始化校验器翻译
- validator.Init()
- router := router.Init()
- sdk.InitConfig(&sdk.ClientConfig{
- ApiDomain: os.Getenv("API_DOMAIN"),
- AppDebug: os.Getenv("APP_DEBUG") == "true",
- })
- srv := &http.Server{
- Addr: ":" + os.Getenv("HTTP_PORT"),
- Handler: router,
- }
- go func() {
- // 服务连接
- if err := srv.ListenAndServe(); err != nil && err != http.ErrServerClosed {
- log.Fatalf("服务开启失败: %s\n", err)
- }
- }()
- // 等待中断信号以优雅地关闭服务器(设置 5 秒的超时时间)
- quit := make(chan os.Signal)
- signal.Notify(quit, os.Interrupt)
- <-quit
- log.Println("服务关闭中..")
- ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
- defer cancel()
- if err := srv.Shutdown(ctx); err != nil {
- log.Fatal("服务关闭异常:", err)
- }
- log.Println("服务已退出")
- }
|