Просмотр исходного кода

refactor: Improve model request rate limit middleware execution

1808837298@qq.com 1 год назад
Родитель
Сommit
b841ce006f
1 измененных файлов с 16 добавлено и 14 удалено
  1. 16 14
      middleware/model-rate-limit.go

+ 16 - 14
middleware/model-rate-limit.go

@@ -153,21 +153,23 @@ func memoryRateLimitHandler(duration int64, totalMaxCount, successMaxCount int)
 
 // ModelRequestRateLimit 模型请求限流中间件
 func ModelRequestRateLimit() func(c *gin.Context) {
-	// 如果未启用限流,直接放行
-	if !setting.ModelRequestRateLimitEnabled {
-		return defNext
-	}
-
-	// 计算限流参数
-	duration := int64(setting.ModelRequestRateLimitDurationMinutes * 60)
-	totalMaxCount := setting.ModelRequestRateLimitCount
+	return func(c *gin.Context) {
+		// 在每个请求时检查是否启用限流
+		if !setting.ModelRequestRateLimitEnabled {
+			c.Next()
+			return
+		}
 
-	successMaxCount := setting.ModelRequestRateLimitSuccessCount
+		// 计算限流参数
+		duration := int64(setting.ModelRequestRateLimitDurationMinutes * 60)
+		totalMaxCount := setting.ModelRequestRateLimitCount
+		successMaxCount := setting.ModelRequestRateLimitSuccessCount
 
-	// 根据存储类型选择限流处理器
-	if common.RedisEnabled {
-		return redisRateLimitHandler(duration, totalMaxCount, successMaxCount)
-	} else {
-		return memoryRateLimitHandler(duration, totalMaxCount, successMaxCount)
+		// 根据存储类型选择并执行限流处理器
+		if common.RedisEnabled {
+			redisRateLimitHandler(duration, totalMaxCount, successMaxCount)(c)
+		} else {
+			memoryRateLimitHandler(duration, totalMaxCount, successMaxCount)(c)
+		}
 	}
 }