61 lines
1.6 KiB
Go
61 lines
1.6 KiB
Go
package main
|
||
|
||
import (
|
||
"log"
|
||
"net/http"
|
||
"strconv"
|
||
"time"
|
||
"toutoukan/controllers/search"
|
||
"toutoukan/init/bleveInit"
|
||
"toutoukan/init/config"
|
||
"toutoukan/init/databaseInit"
|
||
"toutoukan/init/redisInit"
|
||
"toutoukan/router"
|
||
|
||
"github.com/sirupsen/logrus"
|
||
)
|
||
|
||
func main() {
|
||
logrus.SetFormatter(&logrus.TextFormatter{
|
||
ForceColors: true,
|
||
FullTimestamp: true, // 启用完整时间戳
|
||
TimestampFormat: "2006-01-02 15:04:05", // 自定义绝对时间格式
|
||
DisableTimestamp: false, // false=显示时间戳,true=去除时间戳
|
||
})
|
||
logrus.Info("------启动-----")
|
||
bleveInit.InitIndex()
|
||
databaseInit.DbInit()
|
||
redisInit.RedisInit()
|
||
if err := config.Goinit(); err != nil {
|
||
panic(err)
|
||
}
|
||
r := router.SetupRouter()
|
||
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)
|
||
}
|
||
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("数据库连接池已成功关闭")
|
||
}
|
||
}()
|
||
defer redisInit.RedisClient.Close()
|
||
defer search.CloseIndex()
|
||
}
|