Jackett 429 限流报错,3步搞定 TooManyRequestsException 的终极排查
【免费下载链接】JackettAPI Support for your favorite torrent trackers项目地址: https://gitcode.com/GitHub_Trending/ja/Jackett
在 Jackett 的手动搜索里敲下关键词,结果列表刷了一半,某个索引器的位置弹出一行429 Rate limited,紧接着就是 TooManyRequestsException——你的 Jackett 正在被站点劝退。这篇就把这个报错的来龙去脉和处理步骤讲透。
429 是站点按了暂停键,不是你的账号出了问题。
想修好它,得先知道 Jackett 是怎么"接住"这次限流的。
429 在 Jackett 内部走了什么路
追踪器站点怕服务器被打挂,会对请求频率下手:超了就回一个 HTTP 429。Jackett 里各索引器的解析代码发现 429 后会主动抛出这个异常,比如 FileList 索引器里就有这样一段:
if ((int)indexerResponse.Status == 429) { throw new TooManyRequestsException("Rate limited", indexerResponse); }异常类本体在 TooManyRequestsException.cs,它身上最重要的东西是RetryAfter属性:站点在响应头里给了Retry-After: 60,它就存 60 秒;没给,就留个空值让上层兜底。
两个设计意图值得记住:
- 等站点的指令,而不是自己瞎猜:优先解析
Retry-After头里的秒数或日期,站点说等多久就记多久,避免一限流就满屏"重试风暴"。 - 限流状态会传染给整个索引器的健康检查:索引器基础类捕获到这个异常后,会把该索引器的健康有效期顺延
RetryAfter的时长,这段时间内它会被标记为不可用,而不是继续发请求撞墙。
说白了,这个报错本身不是终点,而是 Jackett 在替你执行"冷却期"。
弄懂了冷却机制,处理起来就有顺序了。
处理 429 报错的 3 个动手步骤
先开启搜索缓存,拦住重复请求
同一查询短时间内重复打站点,是最容易触顶的频率来源。Jackett 对每个查询都有缓存层,命中缓存就不发请求。
- 别在第三方客户端里把"忽略缓存"选项勾上,重复搜索让它走缓存。
- 客户端的轮询间隔调到 5 分钟以上,和站点的免费额度对得上。
关掉用不到的索引器
每个启用的索引器都会独立响应你的每次搜索,18 个索引器同时查就是 18 路请求同时压出去。
- 打开配置页,把长期不用的索引器直接禁用或删除。
- 私有站只保留一两个主力,公开站挑响应快的,数量控制在个位数。
读懂 Retry-After,学会等它自己好
想确认"还要等多久",看响应头就行。ResultsController.cs里对 Torznab 请求的处理是这样的:
var retryTime = tooManyRequestsException.RetryAfter != TimeSpan.Zero ? tooManyRequestsException.RetryAfter : TimeSpan.FromMinutes(1);站点没给时间就按 1 分钟兜底。
- 看到 429 响应头里的
Retry-After值,就安静等它过去,别手动狂点搜索。 - 等完仍频繁触发,说明是你自己的查询节奏压着上限,回到前两步继续降频。
一张图把这条链路走完。
一图看懂限流与恢复
关键就在 F 这一步:Jackett 会主动停手,你唯一要做的是别在冷却期里继续手动搜索帮倒忙。
最后列几个高频翻车点,对着自查一遍。
避开这些坑,429 就不容易再来
- 多站并发:私有站一般按并发算额度,搜索前把无关索引器全部关掉。
- 缓存白开:客户端每次强制"刷新"会绕过缓存,等于给站点喂重复流量。
- 不看日志:Jackett 日志会记下每次 429 的时间和来源,排查前先看日志再动手。
- 改代码当捷径:这是配置层面的问题,改源码等不到站点解除限流,调间隔才是正解。
想往源码深处再走一步,这几个入口就够。
延伸入口
- 异常本体:TooManyRequestsException.cs
- 冷却与健康状态的实现:BaseIndexer.cs
- 项目说明:README.md
429 说白了就是站点说:稍后再来,别追着它。
【免费下载链接】JackettAPI Support for your favorite torrent trackers项目地址: https://gitcode.com/GitHub_Trending/ja/Jackett
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考