fix: 上游限频全局冷却调整为 5 秒

- rockRateLimitCooldown 由 60 秒改为 5 秒,释放校验可快速重试
- 自动轮询仍保留各自的防抖与指数退避,避免持续触发 110001
- 同步更新注释与限频测试中的冷却设置
This commit is contained in:
2026-11-15 14:23:16 +08:00
parent 3ea93c0e0d
commit c506c9e2ed
3 changed files with 4 additions and 3 deletions
@@ -20,7 +20,8 @@ const (
// 单个报文字段最大长度,避免异常大响应拖垮数据库;超出部分截断并标注。
rockDeliveryLogMaxBodyBytes = 512 * 1024
// 上游 110001 频控后的全局冷却时间。
rockRateLimitCooldown = 60 * time.Second
// 默认 5 秒:释放校验等人工操作可以快速重试;自动轮询仍有各自的退避与防抖。
rockRateLimitCooldown = 5 * time.Second
)
// rockUpstreamRateLimitedUntil 记录上游频控解禁时间(UnixNano)。
@@ -39,7 +39,7 @@ func (s *RockService) SetRedeemConfirmHook(hook func(ctx context.Context, order
// RunRedeemConfirmWorker 启动发货结果确认任务:每 20 秒扫描一次「发货确认中」标记。
//
// 频控保护:上游 110001 时全局冷却 60 秒,且每个 Token 使用指数退避,
// 频控保护:上游 110001 时全局冷却 5 秒,且每个 Token 使用指数退避,
// 避免把 0666.pro 的公开刷新接口打成持续频控。
func (s *RockService) RunRedeemConfirmWorker(ctx context.Context) {
lastCleanup := time.Now()
@@ -141,7 +141,7 @@ func TestCheckReleaseToken_RateLimitCooldownSkipsUpstream(t *testing.T) {
t.Fatalf("创建 Token 失败: %v", err)
}
rockUpstreamRateLimitedUntil.Store(time.Now().Add(30 * time.Second).UnixNano())
rockUpstreamRateLimitedUntil.Store(time.Now().Add(rockRateLimitCooldown).UnixNano())
t.Cleanup(func() { rockUpstreamRateLimitedUntil.Store(0) })
res, err := svc.CheckReleaseToken(context.Background(), token.ID)