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)