diff --git a/web/backend/services/automation/__init__.py b/web/backend/services/automation/__init__.py index 12bcd41..a064ab3 100644 --- a/web/backend/services/automation/__init__.py +++ b/web/backend/services/automation/__init__.py @@ -104,10 +104,22 @@ def register_default_jobs() -> None: JobSpec( key=ACCOUNT_OVERVIEW_REFRESH_KEY, title="账号资料定时补全", - # 默认每 30 分钟一轮、每轮 30 个 —— 约 20 秒跑完,慢而稳。 - # 8,000 个待查按这个速度约 3 天补完,全程不打满斗鱼接口。 - interval_seconds=30 * 60, - batch_size=30, + # 每 10 分钟一轮、每轮 400 个。 + # + # 依据是**试水实测**,不是拍脑袋:200 个并发 3 跑了 131 秒 + # = **1.53 个/秒 ≈ 5,500 个/小时**。瓶颈不在查询速度,而在调度频率。 + # 400 个 × 0.65 秒 ≈ **4.4 分钟**跑完,10 分钟一轮 + # = **2,400 个/小时**,7,784 个约 **3.2 小时**补完。 + # + # ⚠️ 一轮时长必须**明显小于间隔**:调度器是**串行**的 + # (见 scheduler.run_due_jobs 的注释:作业一个一个跑), + # 我的作业跑着的时候 CK 巡检/重登都得等着。所以宁可轮次多一些, + # 也不要一轮跑太久 —— 4.4 分钟 / 10 分钟是刻意留出的余量。 + # + # 想更快就调大 `batch_size`(账号列表里那套),但**跑得越快越容易被风控**, + # 而风控是所有账号一起受影响。 + interval_seconds=10 * 60, + batch_size=400, concurrency=3, run=run_account_overview_refresh, )