You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python处理10万+行数据集:分阶段带延迟调用API方案咨询

针对10万+行数据集的双阶段API并行处理方案

核心思路

不用等第一阶段全量完成,让两个阶段部分并行:第一阶段持续生成响应ID,10分钟后第二阶段启动,实时消费已生成的ID发起状态查询。以下是具体实现方向:


1. 异步任务队列调度(适合高并发场景)

  • 把第一阶段的每行API请求拆成独立任务,放入异步队列(比如Python的Celery/RQ、Node.js的BullMQ),用多Worker并行执行,拿到响应ID后实时写入临时存储(Redis、内存缓存表或本地SQLite表)。
  • 启动第一阶段后,设置10分钟定时器,时间到后启动第二阶段的任务队列:从临时存储批量读取未处理的响应ID,拆成检查任务放入第二个队列,同样用多Worker并行调用状态API。
  • 两个队列持续运行,直到第一阶段任务全部完成,且第二阶段把所有ID的状态查询完毕。务必给每个ID加去重标记(比如Redis集合记录已检查ID),避免重复请求。

2. 分批次+定时扫描(轻量易实现)

  • 将数据集拆成小批次(比如每1000行一批),第一阶段按批次顺序调用API,每完成一批就把响应ID写入CSV/Google Sheet的第三列(或单独的状态跟踪表)。
  • 写独立的后台脚本:启动后先休眠10分钟,之后每隔固定时间(比如1分钟)扫描已填充的响应ID列,收集未查询过的ID,批量发起状态检查API,把结果写入第四列。
  • 技术工具:Python用schedule库做定时,Linux用cron触发脚本;Google Sheet直接用Apps Script的时间驱动触发器实现定时扫描。

3. 流式处理+实时消费(超大数据集友好)

  • 处理CSV时用csv.reader流式读取,边读边发起第一阶段API请求,拿到响应ID后立刻写入可实时读取的存储(比如Redis列表、临时CSV文件)。
  • 第二阶段用独立进程,启动后先等待10分钟,之后持续监听存储的新增数据:一旦有新ID加入,就发起状态检查请求。
  • 优势:无需一次性加载10万+行到内存,避免内存溢出,适合超大规模数据集。

关键注意事项

  • API限流控制:两个阶段都要加并发限制(比如Python用tenacity、Node.js用p-limit),避免触发API服务商的限流机制导致封禁。
  • 异常重试:给API请求加重试逻辑,处理网络波动、超时等异常,保证数据完整性。
  • 状态持久化:必须记录已检查的ID,比如在CSV/Sheet加“已检查”标记列,或用Redis集合存已处理ID,防止重复请求。
  • Google Sheet特殊处理:因Google API有配额限制,第一阶段请求需加Utilities.sleep()控制间隔;第二阶段用时间触发器时,单次批量请求不要超过API配额上限。

内容的提问来源于stack exchange,提问作者MikG

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 18:06:39