电商采集任务老是半路掉线,代理池的并发和重试策略到底该怎么重写?

电商采集看着跑得飞快,结果总是:

进度卡在一半不动,日志后半截全是超时和 429;
同一套代理,有时一口气跑完,有时集体掉线;
换了几家代理、加了出口、升了机器,问题还是反复出现。

多半不是线坏了,而是并发太猛、重试太莽撞,把出口和目标站一起打爆。
要想任务跑完又跑稳,得重写三件东西:并发限速、重试规则、任务拆分。

这篇只干一件事:
帮你改出一套更靠谱的“并发 + 重试”策略,让电商采集少掉线、少烧线。

一、先认清问题,本质是你在“自我过载”

1. 典型掉线症状

单次任务:前半批正常,后半批成片报错;
某些 SKU 总采不全,错误不是超时就是连接重置;
worker 从 5 提到 20,成功率就肉眼下滑;
代理面板显示节点在线、延迟正常,应用侧却频繁掉线。

2. 三种过载叠加

池子整体过载:
所有任务共用一个池,没人管总 QPS,上到哪算哪。

单个出口过载:
名义上有很多 IP,轮换极不均匀,少数出口承担了大部分流量。

重试放大:
超时、5xx、429 一律“立刻重试 + 换 IP”,
本该记一次失败的请求,被反复撞在同一批出口和目标站上。

二、重写并发策略,用三层限速顶住节奏

先给“能发多少请求”上闸门,再谈重试。

1. 全局限速

针对单网站给一条总上限:

小团队可以先定在 20–30 QPS;
先按保守值跑几天,看错误和验证码情况再慢慢往上加。

只要总量不飙,局部抖动也不容易炸全局。

2. 池级限速

如果已经拆出业务池和采集池,必须分开控速:

BUSINESS_POOL 为登录和后台浏览服务,限得更狠,比如 5–10 QPS;
SPIDER_POOL 扛采集,限在 20–30 QPS,也要有硬顶。

这样就算采集瞬时猛起来,也不会拖垮账号相关访问。

3. 出口级限速

每条 IP 再设“人流量上限”:

单 IP 每秒 2–3 个请求;
单 IP 并发数控制在几十以内,具体看站点承受能力。

实现时,在调度层维护计数:
只从“未超限的出口”里挑线;
所有出口都满了,就排队,别再硬往上撞。

三、重写重试逻辑,按错误类型决定“撞不撞”

限好了“上多少车”,再决定“车坏了怎么办”。

1. 网络错误,轻微兜底就好

超时、连接失败、握手失败等:

同一 URL 在当前出口重试一次;
再失败,换一条出口再试一次;
仍失败就记“网络失败”,丢进下轮补采,不当场死磕。

2. 429、503、验证码页,必须踩刹车

这是目标站在说“你太频繁”。

第一次出现:当前出口上的这一批任务整体暂停十几秒再继续;
短期重复出现:暂停时间拉到几十秒,并下调这条线在池中的权重;
某线持续大量回这类错误,就暂时下线,改天再评估要不要放回池子。

绝不要写成“429 → 立刻换 IP 再打一圈”。

3. 永久错误,直接放弃

404、410、明确“下架”或“无权限”:

直接标记失败并落库,不做任何重试,避免浪费出口和请求额度。

四、新手可抄模板,用二十条线稳跑一万商品

假设:

目标站一个;
每轮采集一万商品详情;
有二十条机房 IP 和五条住宅 IP;
只要求两小时内采完。

可以照下面来:

1. 池子和角色

BUSINESS_POOL:五条住宅
只给后台登录和人工操作用。

SPIDER_POOL:二十条机房
一万商品采集全部走这里,不碰住宅线。

如果用易路代理,可以在面板里建两组标签:
BUSINESS_POOL 对应住宅出口,SPIDER_POOL 对应机房出口,
脚本里只填标签,不写死 IP。

2. 并发与拆分

全局对该站限速三十 QPS。

在 SPIDER_POOL 内:

单 IP QPS 限 2;
单 IP 并发连线控制在三十左右。

把一万 SKU 切成二十个批次,每批五百个 URL:
每批绑定一条机房线,跑完再轮到下一条,
避免一部分线闲着,另一部分被打爆。

3. 重试套用前面的规则

网络错误:每 URL 同出口重试一次、换出口再一次,再失败进补采列表;
429、503:当前出口暂停三十秒,频繁出现就把这条线从 SPIDER_POOL 临时下线;
永久错误:直接记结果,不再访问。

照这版跑一两轮,通常能看到:

任务不再经常卡在某个百分比;
某几条线抖动时,整体还能慢慢跑完;
总请求量和代理账单下去一截,因为无效重试大幅减少。

五、顺手借力易路,让“并发 + 重试”更好管一点

上面这套逻辑,配合易路代理来用会轻松很多:

可以在易路后台把住宅和机房线路分成不同线路组,用标签区分业务池和采集池;
通过面板实时看各出口延迟和成功率,哪些适合做主力、哪些只配给低优先级任务,一眼就能判断;
住宅、机房、移动线路都能统一接入,你可以放心把敏感后台操作锁在高质量住宅线,把大流量采集压到机房池,风险和成本彻底拆开。

实际落地时,你可以先在易路里建好池子和标签,再在自家调度层把三层限速和错误分级重试写进去,用一小批任务试跑,根据易路面板的实时数据微调。

当并发有边界、重试有节奏、出口各司其职之后,电商采集就不再是“跑一把拼运气”,而是一套可以长期复用和扩容的基础设施。