Files
toutoukan/main.go

61 lines
1.6 KiB
Go
Raw Normal View History

2025-08-08 21:43:26 +08:00
package main
2025-08-10 02:10:58 +08:00
import (
2025-09-13 20:01:10 +08:00
"log"
2025-09-24 20:56:29 +08:00
"net/http"
2025-08-10 02:10:58 +08:00
"strconv"
2025-09-24 20:56:29 +08:00
"time"
2025-08-11 23:10:36 +08:00
"toutoukan/controllers/search"
2025-08-12 17:06:48 +08:00
"toutoukan/init/bleveInit"
2025-09-15 11:09:22 +08:00
"toutoukan/init/config"
2025-08-10 02:10:58 +08:00
"toutoukan/init/databaseInit"
"toutoukan/init/redisInit"
"toutoukan/router"
2025-09-14 00:46:14 +08:00
"github.com/sirupsen/logrus"
2025-08-10 02:10:58 +08:00
)
2025-08-08 21:43:26 +08:00
func main() {
2025-09-14 00:46:14 +08:00
logrus.SetFormatter(&logrus.TextFormatter{
ForceColors: true,
FullTimestamp: true, // 启用完整时间戳
TimestampFormat: "2006-01-02 15:04:05", // 自定义绝对时间格式
DisableTimestamp: false, // false=显示时间戳true=去除时间戳
})
logrus.Info("------启动-----")
2025-08-12 17:06:48 +08:00
bleveInit.InitIndex()
2025-08-10 02:10:58 +08:00
databaseInit.DbInit()
redisInit.RedisInit()
if err := config.Goinit(); err != nil {
panic(err)
}
r := router.SetupRouter()
2025-09-24 20:56:29 +08:00
server := &http.Server{
Addr: ":" + strconv.Itoa(config.Conf.Port),
Handler: r,
ReadTimeout: 5 * time.Second, // 客户端读取超时
WriteTimeout: 10 * time.Second, // 服务端写入超时
IdleTimeout: 30 * time.Second, // 空闲连接超时
}
if err := server.ListenAndServe(); err != nil && err != http.ErrServerClosed {
log.Fatalf("Server failed to start: %v", err)
2025-08-10 02:10:58 +08:00
}
2025-09-13 20:01:10 +08:00
defer func() {
sqlDB, err := databaseInit.UserDB.DB()
if err != nil {
// 处理获取失败的情况
log.Printf("获取底层数据库连接失败: %v", err)
return
}
// 2. 调用 Close() 关闭连接池
if err := sqlDB.Close(); err != nil {
log.Printf("关闭数据库连接池失败: %v", err)
} else {
log.Println("数据库连接池已成功关闭")
}
}()
2025-08-10 02:10:58 +08:00
defer redisInit.RedisClient.Close()
2025-08-11 23:10:36 +08:00
defer search.CloseIndex()
2025-08-08 21:43:26 +08:00
}