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

Python批量POST JSON文件 适配接口每分钟50次限流实现求助

实现方案

核心需要实现三个逻辑:遍历所有目标JSON文件、控制请求频率满足限流规则、补全基础容错避免任务中途中断。
限流规则换算:每分钟最多50次请求,即单次请求最小间隔为60/50=1.2秒,实际使用时建议留0.1秒左右冗余,避免请求耗时、网络延迟导致的计数超限。

可直接运行的代码

import os
import time
import requests

# 基础配置,替换为你的真实参数
url = 'testtest'
headers = {
    'Authorization': 'testtest',
    'Accept': '*/*',
    'Content-Type': 'application/json'
}
file_root_path = r'C:\Accountmanager'  # 加r前缀标记为原始字符串,避免Windows路径反斜杠转义错误
total_file_count = 2800
request_interval = 60 / 50 + 0.1  # 单请求间隔1.3秒,留冗余防限流

for file_index in range(1, total_file_count + 1):
    # 拼接当前要提交的文件路径
    current_file_name = f'json{file_index}.json'
    current_file_path = os.path.join(file_root_path, current_file_name)
    
    try:
        # 用with上下文管理器打开文件,自动释放文件句柄,避免资源泄漏
        with open(current_file_path, 'rb') as f:
            # 加超时参数,避免单个请求无响应卡住整个任务
            resp = requests.post(url, data=f, headers=headers, timeout=15)
        # 打印进度方便排查
        print(f"[进度 {file_index}/{total_file_count}] 文件{current_file_name}提交完成,响应状态码:{resp.status_code}")
    except Exception as e:
        # 单个文件提交失败不中断整体任务,打印错误信息即可
        print(f"[进度 {file_index}/{total_file_count}] 文件{current_file_name}提交失败,错误:{str(e)}")
    
    # 无论请求成功失败,都等待够间隔时间,严格遵守限流规则
    time.sleep(request_interval)

注意事项

  • 代码里补了你原代码缺失的括号、文件自动关闭、请求超时、异常捕获逻辑,不会出现跑一半因为单个请求报错就中断、文件被占用的问题
  • 如果你测试时发现还是触发限流,可以把request_interval的值调大一点,比如改成1.5,总耗时也就70分钟左右,稳定性更高
  • 如果需要重跑失败的文件,可以在异常捕获逻辑里把失败的文件序号存到列表里,所有文件遍历完之后单独遍历失败列表重新提交即可
  • 不要尝试用并发提交提速,当前量级顺序提交的实现成本最低,也最容易匹配接口的限流规则,不会出现意外被封的情况

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 20:01:22