This commit refactors the logging mechanism across the application by replacing direct logger calls with a centralized logging approach using the `common` package. Key changes include: - Replaced instances of `logger.SysLog` and `logger.FatalLog` with `common.SysLog` and `common.FatalLog` for consistent logging practices. - Updated resource initialization error handling to utilize the new logging structure, enhancing maintainability and readability. - Minor adjustments to improve code clarity and organization throughout various modules. This change aims to streamline logging and improve the overall architecture of the codebase.
69 lines
1.9 KiB
Go
69 lines
1.9 KiB
Go
package setting
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
"math"
|
|
"one-api/common"
|
|
"sync"
|
|
)
|
|
|
|
var ModelRequestRateLimitEnabled = false
|
|
var ModelRequestRateLimitDurationMinutes = 1
|
|
var ModelRequestRateLimitCount = 0
|
|
var ModelRequestRateLimitSuccessCount = 1000
|
|
var ModelRequestRateLimitGroup = map[string][2]int{}
|
|
var ModelRequestRateLimitMutex sync.RWMutex
|
|
|
|
func ModelRequestRateLimitGroup2JSONString() string {
|
|
ModelRequestRateLimitMutex.RLock()
|
|
defer ModelRequestRateLimitMutex.RUnlock()
|
|
|
|
jsonBytes, err := json.Marshal(ModelRequestRateLimitGroup)
|
|
if err != nil {
|
|
common.SysLog("error marshalling model ratio: " + err.Error())
|
|
}
|
|
return string(jsonBytes)
|
|
}
|
|
|
|
func UpdateModelRequestRateLimitGroupByJSONString(jsonStr string) error {
|
|
ModelRequestRateLimitMutex.RLock()
|
|
defer ModelRequestRateLimitMutex.RUnlock()
|
|
|
|
ModelRequestRateLimitGroup = make(map[string][2]int)
|
|
return json.Unmarshal([]byte(jsonStr), &ModelRequestRateLimitGroup)
|
|
}
|
|
|
|
func GetGroupRateLimit(group string) (totalCount, successCount int, found bool) {
|
|
ModelRequestRateLimitMutex.RLock()
|
|
defer ModelRequestRateLimitMutex.RUnlock()
|
|
|
|
if ModelRequestRateLimitGroup == nil {
|
|
return 0, 0, false
|
|
}
|
|
|
|
limits, found := ModelRequestRateLimitGroup[group]
|
|
if !found {
|
|
return 0, 0, false
|
|
}
|
|
return limits[0], limits[1], true
|
|
}
|
|
|
|
func CheckModelRequestRateLimitGroup(jsonStr string) error {
|
|
checkModelRequestRateLimitGroup := make(map[string][2]int)
|
|
err := json.Unmarshal([]byte(jsonStr), &checkModelRequestRateLimitGroup)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
for group, limits := range checkModelRequestRateLimitGroup {
|
|
if limits[0] < 0 || limits[1] < 1 {
|
|
return fmt.Errorf("group %s has negative rate limit values: [%d, %d]", group, limits[0], limits[1])
|
|
}
|
|
if limits[0] > math.MaxInt32 || limits[1] > math.MaxInt32 {
|
|
return fmt.Errorf("group %s [%d, %d] has max rate limits value 2147483647", group, limits[0], limits[1])
|
|
}
|
|
}
|
|
|
|
return nil
|
|
}
|