feat: 登录流程整体重试机制 + 代理池耗尽等待恢复

- DouyuLogin.login() 添加整体重试循环,失败时换新代理从头重跑
  - 新增 max_login_retries(默认3次)和 max_total_time(默认300秒)
  - 重试前重置 session cookies + 换新代理,避免残留状态
  - 成功后归还代理到池;失败时标记代理坏
- 代理池耗尽时不再立即放弃账号,等待最多60秒恢复后再试
- API代理模式改为 DouyuLogin 内部通过 proxy_manager 自治管理
  登录过程中的代理切换(极验、整体重试)不再由服务层预取
- Schema/LoginBatchRequest 添加 max_login_retries 和 max_total_time
- 前端 API 调用改为对象参数形式,透传新参数
This commit is contained in:
yml2213
2026-06-23 22:06:00 +08:00
parent 0a68632c8a
commit cc30697c97
6 changed files with 160 additions and 54 deletions
+2
View File
@@ -126,6 +126,8 @@ class LoginBatchRequest(BaseModel):
account_ids: list[int]
max_geetest_retries: int = 5
max_proxy_retries: int = 10 # 代理切换次数,0=无限切换直到成功
max_login_retries: int = 3 # 登录整体重试次数(换代理从头重跑)
max_total_time: float = 300 # 单账号登录总时长上限(秒),超时则放弃
concurrency: int = 3 # 并发数,1-10