fix(data): stats 改域内首末请求间隔(lane 总时长跨段失真) [nas]
CI/CD / test (push) Successful in 6s
CI/CD / nas-deploy (push) Successful in 7s
CI/CD / nas-verify (push) Successful in 9s

09-07 首跑 daily 收官 stats 乌龙: cninfo n=3 avg=3621s(被全文段时长摊薄)/
eastmoney 2.26s(真实1.25s); 改 DomainClient 首末请求时间戳 avg=(t_last-t_first)/(n-1),
后续 run 起直读真节奏
This commit is contained in:
2026-09-07 12:27:46 +08:00
parent 3b9b1e6634
commit d426619a96
+15 -2
View File
@@ -144,6 +144,8 @@ class DomainClient:
self.cooled = False
self.n_requests = 0
self._last = 0.0
self._t_first = None
self._t_last = None
def _pace(self):
interval = RATE.get(self.name, 1.0) + random.uniform(*JITTER)
@@ -151,8 +153,18 @@ class DomainClient:
if wait > 0:
time.sleep(wait)
self._last = time.monotonic()
if self._t_first is None:
self._t_first = self._last
self._t_last = self._last
self.n_requests += 1
def avg_interval(self):
"""域内首末请求间隔/(n-1): 真实节奏(lane 总时长跨段失真, 09-07 实锤
cninfo n=3 avg=3621s 的乌龙)。"""
if self.n_requests < 2 or self._t_first is None:
return None
return (self._t_last - self._t_first) / (self.n_requests - 1)
def _transport_fail(self, msg):
self.consecutive_errors += 1
if self.consecutive_errors >= COOLDOWN_ERRORS:
@@ -1176,9 +1188,10 @@ def run_lane(lane, until=None, limit=None):
_save_depth(ctx)
for name, cl in ctx.clients.items():
if cl.n_requests:
log.info("stats %s: n_requests=%d avg_interval=%.2fs%s",
avg = cl.avg_interval()
log.info("stats %s: n_requests=%d avg_interval=%s%s",
name, cl.n_requests,
(time.monotonic() - t0) / cl.n_requests,
f"{avg:.2f}s" if avg is not None else "n/a",
" [429]" if cl.rate_limited else
" [cooled]" if cl.cooled else "")
log.info("lane=%s done in %.0fs: units=%d failed=%d rc=%d",