fix: 账户限流预算小于单卡调用数时卡永远领不到
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 9m36s
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 9m36s
领取脚本在一张卡同组到期调用数大于剩余预算时停止领取,账户 QPS 很小或长期接近上限时,同时到期多项的卡会一直排不上,整个账户停止轮询。改为本轮该组尚未占用且预算大于 0 时至少放行一张,超出部分由网关限流等待模式排队;预算为 0 时仍不领取。
This commit is contained in:
@@ -60,7 +60,10 @@ local function tryClaim(cardId, fromPriority, qkey)
|
||||
end
|
||||
end
|
||||
for g, n in pairs(need) do
|
||||
if budget[g] ~= nil and (used[g] or 0) + n > budget[g] then
|
||||
-- 本轮该组尚未占用且预算大于 0 时至少放行一张卡:否则一张卡的调用数大于预算(如账户 1 QPS、卡同时到期 3 项)时永远领不到;
|
||||
-- 超出部分由网关限流等待模式在调用时排队。
|
||||
local u = used[g] or 0
|
||||
if budget[g] ~= nil and (budget[g] <= 0 or (u > 0 and u + n > budget[g])) then
|
||||
stop = true
|
||||
return false
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user