fix(capacity): limit each user and queue heavy compute briefly.
Consult, rectification turns, and report generation stop before a credit reservation when the product caps are hit. A full heavy-compute gate waits up to 8 seconds, and one consultation retries that 429 inside the same request. Co-Authored-By: Grok (agent loop)
This commit is contained in:
co-authored by
Grok (agent loop)
parent
ef49257b73
commit
a54f75e5e3
@@ -153,7 +153,10 @@ def test_chart_overview_gate_is_off_by_default(monkeypatch) -> None:
|
||||
|
||||
def test_chart_overview_gate_only_sync_unskipped_requests(monkeypatch) -> None:
|
||||
monkeypatch.setenv(gate.ENV_GATE_CHART_OVERVIEW, "1")
|
||||
gate.reset_heavy_compute_gate(limit=1)
|
||||
# 原值:reset(limit=1) 后第二次立刻 HeavyComputeBusy
|
||||
# 新值:wait_seconds=0
|
||||
# 原因:默认改为短排队;本测试仍锁「名额被占时同步排盘被拒绝」,等待行为不在这里
|
||||
gate.reset_heavy_compute_gate(limit=1, wait_seconds=0)
|
||||
body = {"year": 1990, "lat": 28.6, "lon": 77.2}
|
||||
slot = gate.acquire_heavy_compute_slot_for_request("/api/chart", body)
|
||||
assert slot is not None
|
||||
@@ -172,7 +175,10 @@ def test_chart_overview_gate_only_sync_unskipped_requests(monkeypatch) -> None:
|
||||
|
||||
|
||||
def test_busy_log_names_holders_and_not_the_body(caplog) -> None:
|
||||
gate.reset_heavy_compute_gate(limit=1)
|
||||
# 原值:reset(limit=1) 后拒绝日志立刻出现
|
||||
# 新值:wait_seconds=0
|
||||
# 原因:默认会先等 8 秒;本测试仍锁日志只有路径、没有请求正文
|
||||
gate.reset_heavy_compute_gate(limit=1, wait_seconds=0)
|
||||
held = gate.acquire_heavy_compute_slot("/api/professional_report_reference")
|
||||
assert held is not None
|
||||
secret_body = {"birth_date": "1990-01-01", "name": "must-not-appear"}
|
||||
|
||||
Reference in New Issue
Block a user