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

如何用Python应对API单次5值限制,获取全部CDETs的Severity与Status

解决API批量限制,获取所有CDET的Severity与Status数据

核心方案

把从MongoDB拿到的CDET列表按每5个一组拆分,循环调用API获取每组数据,最后合并所有结果,就能拿到全部CDET的Severity和Status了。

修改后的完整代码

import pymongo
import requests

# 连接MongoDB并获取所有CDET ID
client = pymongo.MongoClient("mongodb://localhost:27017/")
db = client["你的数据库名"]
collection = db["你的集合名"]
# 提取所有CDET ID,根据实际字段名调整
cdet_ids = [doc["cdet_id"] for doc in collection.find({}, {"cdet_id": 1, "_id": 0})]

# 定义拆分列表的工具函数,按5个一组切分
def split_into_chunks(lst, size=5):
    for i in range(0, len(lst), size):
        yield lst[i:i+size]

# 遍历分组调用API,收集所有数据
all_cdet_info = []
api_endpoint = "你的目标API地址"

for chunk in split_into_chunks(cdet_ids):
    # 按API要求构造请求参数,参数名根据实际接口调整
    req_payload = {"cdet_ids": chunk}
    try:
        resp = requests.post(api_endpoint, json=req_payload)
        resp.raise_for_status()  # 抛出HTTP请求错误
        # 把当前分组的结果加入总列表
        all_cdet_info.extend(resp.json())
    except requests.exceptions.RequestException as e:
        print(f"调用API处理分组{chunk}时出错: {e}")
        # 可根据需求添加重试逻辑

# 可选:把更新的数据写回MongoDB
for info in all_cdet_info:
    collection.update_one(
        {"cdet_id": info["cdet_id"]},
        {"$set": {
            "severity": info["severity"],
            "status": info["status"]
        }}
    )

print(f"完成!共获取{len(all_cdet_info)}条CDET的Severity和Status数据")

关键细节说明

  • 列表拆分:用生成器split_into_chunks高效切分列表,避免内存占用过高,完美适配API单次5个的限制
  • 错误处理:加入异常捕获,避免单个分组请求失败导致整个流程中断,可按需添加重试机制
  • 数据合并:用extend合并每组返回结果,保证最终数据是完整的所有CDET信息
  • 灵活性:代码里的数据库名、集合名、API地址、参数名都需要根据你的实际环境调整

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 22:10:19