← 返回博客
技术进阶2026-09-23·Digital Footprint Health Team

删除任务的断点续传是怎么设计的

X/Twitter断点续传删除脚本幂等任务状态

删除任务的规模一旦上百条,中断就是常态。网络会掉,笔记本会休眠,长跑的进程会被系统按内存压力回收。把「不会中断」当设计前提的任务,第一次断线就报废了,前面的工作全部要重来。

长任务为什么必然会中断

三类原因里,只有一类能靠重试解决。网络层的波动可以退避重试;本机层的休眠和进程回收,需要任务在外部唤醒之后能恢复;平台层的频率限制则需要任务主动降速并等待。三类原因的处理方式不同,但都要求同一件事:任务的状态不能只存在内存里。

这也是「能不能续跑」的分界线。状态只存在内存中的任务,进程一消失,进度就一起消失。

状态机与检查点

把任务拆成有限几个状态,每个状态转换时把必要字段写进磁盘。下面这张表列出常见状态和各自需要落盘的内容。

状态需要落盘的字段恢复时的动作
已就绪待处理清单、筛选条件直接从头开始
处理中已处理条数、最后一条时间戳与 ID、当前批次号从游标位置继续
等待限流限流开始时间、建议等待时长等待期满后继续
批次完成本批结果分类计数启动下一批
已暂停暂停原因、已处理总数人工确认后继续
已完成结果汇总、失败清单进入复核环节

状态机的价值在于让恢复动作唯一。恢复时不需要判断「现在大概做到哪了」,读状态文件,按表执行对应动作即可。状态越少越好,六个状态已经能覆盖常见情况。

幂等:重复处理同一条会怎样

删除接口本身接近幂等,重复删除一条已经不存在的推文,通常只会得到一个"未找到"的响应。真正的麻烦在任务的记账上:重复发送的请求如果都被计入处理量,进度数字会比实际偏高,按条计费时还可能多出条目。

做法是在任务层维护一份已处理 ID 的集合,落盘保存。每批开始前先剔除已在集合中的条目,处理成功后再写入集合。集合大小需要控制,超过十万条时可以用分片的方式按天存储,查询时按日期范围加载。

另一处容易被忽略的幂等点是结果统计。失败条目和跳过条目要分开计数,否则恢复后无法判断「数字对不上」是重复处理还是真的漏了。相关讨论见接口限流下的删除。

和速率限制协同

续传机制和降速策略需要一起设计。如果任务在被限流后立刻重试,恢复逻辑再完善也没用,因为请求根本发不出去。合理的做法是让限流状态成为状态机的一个显式状态:进入该状态后写入等待时长,恢复时先读这个时长,不要读游标。

批与批之间留出间隔也有帮助。间隔让账号的行为密度更接近日常,同时给任务一个天然的中断点,进程在间隔期间被回收也能安全恢复。

最小实现骨架

  1. 清单生成。 从归档解析结果中导出待处理条目,按时间排序,写入一个可断点读取的文件。
  2. 状态文件。 独立于清单存在,记录当前状态和游标。写入采用先写临时文件再替换的方式,避免写一半断电损坏。
  3. 游标推进。 每批完成后更新游标,游标使用时间戳加推文 ID 的组合。
  4. 已处理集合。 按分片存储,启动时加载对应分片,用于跳过重复条目。
  5. 结果分类。 成功、失败、跳过三类分别计数并落盘,为复核环节提供输入。

五个模块合计不超过几百行代码,收益是任务从「一次跑完否则重来」变成「每次运行都在推进」。体量越大,这个收益越明显,关于任务规模的换算见删除上限与耗时估算。

关于 Digital Footprint Health

Digital Footprint Health(digital-footprint-health.shop)的第一步只做解析,不涉及写入:上传 X 数据归档,本机解析全部推文并输出 0 到 100 的评分与分类命中项,只读、不上传、不要求账号授权。解析结果可以按分类导出,作为删除任务的输入清单,相关实现讨论见浏览器端解析归档与自己写删除脚本。处理范围与价格见定价页,从首页可以免费开始。

常见问题

断点续传的核心是什么?

核心是两件事:把任务状态持久化到磁盘,以及保证重复处理同一条内容不会产生副作用。前者让中断后能知道做到哪了,后者让恢复过程可以安全地重跑最后一段。缺任何一件,续传都会出错。

删除接口本身也有幂等性,为什么还要在任务层再做一次?

删除接口接近幂等,重复删除同一条推文通常只会得到「未找到」响应。问题出在统计和计费上:重复发送的请求可能被计入处理量,让进度数字虚高,按条计费时也可能产生额外条目。所以幂等要在任务层实现,而不是依赖接口行为。

检查点应该多久落一次盘?

按批次落盘,批次大小取 500 到 1000 条比较合适。落盘太稀疏,中断时会重复处理较多内容;太频繁,磁盘写入本身会成为开销。落盘内容至少包含已处理条数、最后一条的时间戳和本批的处理结果。

续跑时怎么确定从哪一条继续?

用最后一条的时间戳配合推文 ID 做游标,不要只依赖条数。按时间排序的列表里,同一秒可能有几条推文,只记条数会在边界处错位。以时间戳加 ID 组合定位起点,可以避免漏处理或者重复处理。

检查你自己的 X/Twitter 数字足迹

免费本机扫描,你的归档永不离开电脑。

免费开始体检

相关阅读

发布于 2026-09-23,最后更新于 2026-09-23。