fix: 服务监听失败每5秒重试最多10次

This commit is contained in:
TsMask
2025-07-31 16:47:54 +08:00
parent 06431520d0
commit 90e06af7f4

49
main.go
View File

@@ -4,6 +4,7 @@ import (
"fmt"
"net/http"
"sync"
"time"
_ "net/http/pprof"
@@ -29,7 +30,9 @@ import (
_ "be.ems/swagger_docs"
)
var wg sync.WaitGroup
var wg sync.WaitGroup // 等待服务
var maxRetries = 10 // 最大重试次数
var retryInterval = 5 * time.Second // 重试间隔时间
// @title OMC Swagger API
// @version 1.0.8
@@ -217,7 +220,13 @@ func loadGlobalPre(app *gin.Engine) {
wg.Add(1)
go func(addr string) {
defer wg.Done()
fmt.Println(http.ListenAndServe(addr, nil))
for i := range maxRetries {
if err := http.ListenAndServe(addr, nil); err != nil {
logger.Errorf("pprof run err:%v", err)
time.Sleep(retryInterval) // 重试间隔时间
logger.Warnf("trying to restart HTTP server on %s (Attempt %d)", addr, i)
}
}
}(pprofAddr)
}
}
@@ -252,8 +261,13 @@ func loadServer(app *gin.Engine) {
wg.Add(1)
go func(addr string, certFile string, keyFile string) {
defer wg.Done()
err := app.RunTLS(addr, certFile, keyFile)
logger.Errorf("run tls err:%v", err)
for i := range maxRetries {
if err := app.RunTLS(addr, certFile, keyFile); err != nil {
logger.Errorf("routeServer run tls err:%v", err)
time.Sleep(retryInterval) // 重试间隔时间
logger.Warnf("trying to restart HTTPS server on %s (Attempt %d)", addr, i)
}
}
}(addr, certFile, keyFile)
} else {
addr := ""
@@ -270,8 +284,13 @@ func loadServer(app *gin.Engine) {
wg.Add(1)
go func(addr string) {
defer wg.Done()
err := app.Run(addr)
logger.Errorf("run err:%v", err)
for i := range maxRetries {
if err := app.Run(addr); err != nil {
logger.Errorf("routeServer run err:%v", err)
time.Sleep(retryInterval) // 重试间隔时间
logger.Warnf("trying to restart HTTP server on %s (Attempt %d)", addr, i)
}
}
}(addr)
}
}
@@ -309,8 +328,13 @@ func loadServerWeb() {
wg.Add(1)
go func(addr string, certFile string, keyFile string) {
defer wg.Done()
err := web.RunTLS(addr, certFile, keyFile)
logger.Errorf("web run tls err:%v", err)
for i := range maxRetries {
if err := web.RunTLS(addr, certFile, keyFile); err != nil {
logger.Errorf("webServer run tls err:%v", err)
time.Sleep(retryInterval) // 重试间隔时间
logger.Warnf("trying to restart HTTPS server on %s (Attempt %d)", addr, i)
}
}
}(addr, certFile, keyFile)
} else {
if addr == "" || addr == "<nil>" {
@@ -320,8 +344,13 @@ func loadServerWeb() {
wg.Add(1)
go func(addr string) {
defer wg.Done()
err := web.Run(addr)
logger.Errorf("web run err:%v", err)
for i := range maxRetries {
if err := web.Run(addr); err != nil {
logger.Errorf("webServer run err:%v", err)
time.Sleep(retryInterval) // 重试间隔时间
logger.Warnf("trying to restart HTTP server on %s (Attempt %d)", addr, i)
}
}
}(addr)
}
}