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

Python解析XML拆分SKU批次请求 分片存储XML结果方案

分批次处理SKU请求并输出独立XML文件实现方案

核心实现逻辑

  • 先一次性读取所有SKU存入列表,减少XML树重复遍历开销
  • 按自定义批次大小拆分SKU列表,默认单批次处理300个SKU
  • 单批次内完成所有请求后统一写入对应批次的XML文件,文件按批次序号命名避免覆盖
  • 可配置请求间隔,避免触发接口限流规则

完整可运行代码

import xml.etree.ElementTree as ET
import requests
import time

# 可配置参数
BATCH_SIZE = 300  # 单批次处理SKU数量
REQUEST_INTERVAL = 0.5  # 单次请求间隔(秒),可根据接口要求调整
OUTPUT_FILE_PREFIX = "sku_batch"  # 输出文件前缀

# 读取XML获取所有SKU
tree = ET.parse('products.xml')
root = tree.getroot()
# 过滤空SKU避免无效请求
sku_list = [sku.text.strip() for sku in root.iter('SKU') if sku.text and sku.text.strip()]
total_sku = len(sku_list)
print(f"共读取到{total_sku}个有效SKU,将按每批{BATCH_SIZE}个拆分处理")

# 按批次拆分处理
for batch_num, start_idx in enumerate(range(0, total_sku, BATCH_SIZE), start=1):
    end_idx = min(start_idx + BATCH_SIZE, total_sku)
    current_batch = sku_list[start_idx:end_idx]
    batch_response_content = []
    print(f"开始处理第{batch_num}批次,SKU范围:{start_idx+1} - {end_idx}")

    # 处理当前批次内所有SKU请求
    for sku in current_batch:
        try:
            response = requests.get(f'http://example.com/Items?ID={sku}', timeout=10)
            response.raise_for_status()  # 请求失败抛出异常
            batch_response_content.append(response.text)
            time.sleep(REQUEST_INTERVAL)
        except Exception as e:
            print(f"SKU {sku} 请求失败,错误信息:{str(e)}")
            continue
    
    # 写入当前批次结果到独立XML文件
    output_file_name = f"{OUTPUT_FILE_PREFIX}_{batch_num}_{start_idx+1}_{end_idx}.xml"
    with open(output_file_name, "w", encoding="utf-8") as f:
        # 可根据需求调整批次文件内容拼接逻辑,此处直接拼接所有返回内容
        f.write("\n".join(batch_response_content))
    print(f"第{batch_num}批次处理完成,结果已写入{output_file_name}")

print("所有批次处理完成")

关键优化点说明

  • 批次输出的文件名包含批次号和对应SKU序号范围,方便后续排查问题
  • 增加了基础的异常捕获逻辑,单个SKU请求失败不会中断整批任务
  • 支持自定义批次大小和请求间隔,可根据实际接口性能灵活调整
  • 提前过滤了空值SKU,避免发起无效请求浪费资源

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 03:45:03