From 2bedc5fed8c90d98963150c554e20886e7330b45 Mon Sep 17 00:00:00 2001 From: AhhhLiu Date: Sat, 2 Dec 2023 15:16:37 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E8=AF=95=E5=8F=82=E6=95=B0=E6=A0=A1?= =?UTF-8?q?=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- middleware/retry.go | 7 ++----- router/relay-router.go | 2 +- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/middleware/retry.go b/middleware/retry.go index 81070da5..5f8b6bd8 100644 --- a/middleware/retry.go +++ b/middleware/retry.go @@ -54,10 +54,10 @@ func RetryHandler(group *gin.RouterGroup) gin.HandlerFunc { // Retry maxRetryStr := c.Query("retry") maxRetry, err := strconv.Atoi(maxRetryStr) - if err != nil || maxRetryStr == "" || maxRetry < 0 || maxRetry > common.RetryTimes { + if err != nil || maxRetryStr == "" || maxRetry < 1 || maxRetry > common.RetryTimes { maxRetry = common.Max(common.RetryTimes+1, 1) } - retryDelay := time.Duration(common.RetryInterval) * time.Millisecond + retryDelay := time.Duration(common.Max(common.RetryInterval, 0)) * time.Millisecond for i := 0; i < maxRetry; i++ { if i == 0 { // 第一次请求, 直接执行使用c.Next()调用后续中间件, 防止直接使用handler 内部调用c.Next() 导致重复执行 @@ -86,9 +86,6 @@ func RetryHandler(group *gin.RouterGroup) gin.HandlerFunc { // If errors, retry after delay time.Sleep(retryDelay) } - if len(c.Errors) == 0 { - return - } var openaiErr *OpenAIErrorWithStatusCode err = json.Unmarshal([]byte(c.Errors.Last().Error()), &openaiErr) if err != nil { diff --git a/router/relay-router.go b/router/relay-router.go index cbe9e56e..f7f5eb4c 100644 --- a/router/relay-router.go +++ b/router/relay-router.go @@ -17,7 +17,7 @@ func SetRelayRouter(router *gin.Engine) { modelsRouter.GET("/:model", controller.RetrieveModel) } relayV1Router := router.Group("/v1") - relayV1Router.Use(middleware.RetryHandler(relayV1Router)) + middleware.RetryHandler(relayV1Router) relayV1Router.Use(middleware.TokenAuth(), middleware.Distribute()) { relayV1Router.POST("/completions", controller.Relay)