重试参数校验
This commit is contained in:
parent
f81f53bca4
commit
2bedc5fed8
@ -54,10 +54,10 @@ func RetryHandler(group *gin.RouterGroup) gin.HandlerFunc {
|
|||||||
// Retry
|
// Retry
|
||||||
maxRetryStr := c.Query("retry")
|
maxRetryStr := c.Query("retry")
|
||||||
maxRetry, err := strconv.Atoi(maxRetryStr)
|
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)
|
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++ {
|
for i := 0; i < maxRetry; i++ {
|
||||||
if i == 0 {
|
if i == 0 {
|
||||||
// 第一次请求, 直接执行使用c.Next()调用后续中间件, 防止直接使用handler 内部调用c.Next() 导致重复执行
|
// 第一次请求, 直接执行使用c.Next()调用后续中间件, 防止直接使用handler 内部调用c.Next() 导致重复执行
|
||||||
@ -86,9 +86,6 @@ func RetryHandler(group *gin.RouterGroup) gin.HandlerFunc {
|
|||||||
// If errors, retry after delay
|
// If errors, retry after delay
|
||||||
time.Sleep(retryDelay)
|
time.Sleep(retryDelay)
|
||||||
}
|
}
|
||||||
if len(c.Errors) == 0 {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
var openaiErr *OpenAIErrorWithStatusCode
|
var openaiErr *OpenAIErrorWithStatusCode
|
||||||
err = json.Unmarshal([]byte(c.Errors.Last().Error()), &openaiErr)
|
err = json.Unmarshal([]byte(c.Errors.Last().Error()), &openaiErr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -17,7 +17,7 @@ func SetRelayRouter(router *gin.Engine) {
|
|||||||
modelsRouter.GET("/:model", controller.RetrieveModel)
|
modelsRouter.GET("/:model", controller.RetrieveModel)
|
||||||
}
|
}
|
||||||
relayV1Router := router.Group("/v1")
|
relayV1Router := router.Group("/v1")
|
||||||
relayV1Router.Use(middleware.RetryHandler(relayV1Router))
|
middleware.RetryHandler(relayV1Router)
|
||||||
relayV1Router.Use(middleware.TokenAuth(), middleware.Distribute())
|
relayV1Router.Use(middleware.TokenAuth(), middleware.Distribute())
|
||||||
{
|
{
|
||||||
relayV1Router.POST("/completions", controller.Relay)
|
relayV1Router.POST("/completions", controller.Relay)
|
||||||
|
Loading…
Reference in New Issue
Block a user