mirror of
https://github.com/Wei-Shaw/claude-relay-service.git
synced 2026-01-23 09:38:02 +00:00
fix: 修复apikey的并发控制问题
This commit is contained in:
@@ -1575,13 +1575,53 @@ class RedisClient {
|
||||
// 获取并发配置
|
||||
_getConcurrencyConfig() {
|
||||
const defaults = {
|
||||
leaseSeconds: 900,
|
||||
leaseSeconds: 300,
|
||||
renewIntervalSeconds: 30,
|
||||
cleanupGraceSeconds: 30
|
||||
}
|
||||
return {
|
||||
|
||||
const configValues = {
|
||||
...defaults,
|
||||
...(config.concurrency || {})
|
||||
}
|
||||
|
||||
const normalizeNumber = (value, fallback, options = {}) => {
|
||||
const parsed = Number(value)
|
||||
if (!Number.isFinite(parsed)) {
|
||||
return fallback
|
||||
}
|
||||
|
||||
if (options.allowZero && parsed === 0) {
|
||||
return 0
|
||||
}
|
||||
|
||||
if (options.min !== undefined && parsed < options.min) {
|
||||
return options.min
|
||||
}
|
||||
|
||||
return parsed
|
||||
}
|
||||
|
||||
return {
|
||||
leaseSeconds: normalizeNumber(configValues.leaseSeconds, defaults.leaseSeconds, {
|
||||
min: 30
|
||||
}),
|
||||
renewIntervalSeconds: normalizeNumber(
|
||||
configValues.renewIntervalSeconds,
|
||||
defaults.renewIntervalSeconds,
|
||||
{
|
||||
allowZero: true,
|
||||
min: 0
|
||||
}
|
||||
),
|
||||
cleanupGraceSeconds: normalizeNumber(
|
||||
configValues.cleanupGraceSeconds,
|
||||
defaults.cleanupGraceSeconds,
|
||||
{
|
||||
min: 0
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
// 增加并发计数(基于租约的有序集合)
|
||||
@@ -1650,10 +1690,10 @@ class RedisClient {
|
||||
local now = tonumber(ARGV[3])
|
||||
local ttl = tonumber(ARGV[4])
|
||||
|
||||
local exists = redis.call('ZSCORE', key, member)
|
||||
|
||||
redis.call('ZREMRANGEBYSCORE', key, '-inf', now)
|
||||
|
||||
local exists = redis.call('ZSCORE', key, member)
|
||||
|
||||
if exists then
|
||||
redis.call('ZADD', key, expireAt, member)
|
||||
if ttl > 0 then
|
||||
|
||||
Reference in New Issue
Block a user