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

如何分块迭代列表调用API,按每分钟100次的频率限制执行?

按批次调用限频API的实现方案

核心思路

将数据列表按每100个元素为一个批次拆分,循环处理每个批次;每完成一个批次的API调用后(除最后一批外),暂停60秒再处理下一批,既满足接口的调用频率限制,也不会遗漏任何元素。

实现代码

基于你的原有逻辑,修改后的分批次处理代码如下:

import requests
import time

list_of_data = [你的数据列表]  # 替换为实际的227个元素的列表
batch_size = 100
total_items = len(list_of_data)

# 按步长100遍历批次起始索引
for start_idx in range(0, total_items, batch_size):
    # 截取当前批次的元素,最后一批自动适配剩余数量
    current_batch = list_of_data[start_idx:start_idx + batch_size]
    
    # 处理当前批次内的每个元素
    for data in current_batch:
        # 以下是你的原有API调用逻辑
        url = 'https://api.com/endpoint'
        params = {
            'param_1': data['key1'],
            'param2': data['key2'],
            # ... 补充其他所需参数
        }
        headers = {你的请求头配置}  # 替换为实际headers
        
        response = requests.get(url=url, params=params, headers=headers)
        json_data = response.json()
        # <在这里处理返回的json_data>
    
    # 若不是最后一个批次,暂停60秒
    if start_idx + batch_size < total_items:
        time.sleep(60)

逻辑说明

  • 用range(0, total_items, batch_size)生成每个批次的起始位置,比如0、100、200,对应三组数据:前100个、中间100个、最后27个
  • Python的列表切片会自动处理超出长度的情况,因此最后一批次只会截取剩余的元素,无需额外判断
  • 仅在还有下一批数据需要处理时才执行time.sleep(60),避免最后一批处理完后不必要的等待

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 16:52:35