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

如何使用Python最快发送百万条带固定url、headers、body的POST请求

关于Python批量发送百万级POST请求的解答

首先明确结论:可以实现,但你当前使用的同步requests单线程串行方案完全无法满足百万级请求的效率要求,需要改用并发/异步实现,同时需要留意服务端限流、本地资源占用等限制条件。

现有代码的问题

你当前的代码是单线程同步执行逻辑:每次发送请求后必须等待服务端响应返回,才会执行下一次请求。按照单请求平均响应耗时100ms估算,每秒最多发送10条请求,跑完百万条需要超过27小时,完全不具备可行性。
另外你当前代码中的headers和body赋值为字符串格式,实际使用时需要调整为符合接口要求的字典格式:如果提交的是JSON格式请求体,建议直接使用requests.post的json参数传参,无需手动序列化/反序列化。

推荐实现方案

百万级请求优先选择异步IO方案,性能远高于多线程/多进程方案,推荐使用aiohttp库实现,核心逻辑是通过协程实现高并发,同时控制并发上限避免资源耗尽。

异步实现示例代码

import asyncio
import aiohttp

# 你的配置信息
URL = "https://abcd.com"
HEADERS = {"Content-Type": "application/json"} # 替换为实际请求头
BODY = {"key": "value"} # 替换为实际请求体
# 并发上限,根据服务端承载能力调整,建议先从几百开始测试,避免打崩服务端
MAX_CONCURRENT = 500
# 总请求量
TOTAL_REQUESTS = 1000000

# 信号量控制并发数
semaphore = asyncio.Semaphore(MAX_CONCURRENT)

async def send_post(session):
    async with semaphore:
        try:
            async with session.post(URL, headers=HEADERS, json=BODY) as resp:
                if resp.status == 200:
                    json_resp = await resp.json()
                    return json_resp.get("data")
                else:
                    # 记录错误请求
                    return f"error_status_{resp.status}"
        except Exception as e:
            # 异常捕获,避免单个请求失败导致整个程序崩溃
            return f"request_fail_{str(e)}"

async def main():
    async with aiohttp.ClientSession() as session:
        tasks = [send_post(session) for _ in range(TOTAL_REQUESTS)]
        results = await asyncio.gather(*tasks)
        # 这里可以添加结果持久化逻辑,比如写入文件、数据库
        print(f"完成请求数:{len(results)}")

if __name__ == "__main__":
    asyncio.run(main())

注意事项

  • 并发数不要盲目调大:过高的并发会耗尽本地网络、内存资源,也很容易触发服务端的限流、反爬规则,导致IP被封禁或者请求批量失败
  • 建议添加失败重试逻辑:对于网络波动、服务端临时报错的请求,可以设置3次以内的重试机制,提升请求成功率
  • 结果不要仅做打印输出:百万级请求的结果建议直接写入文件或者数据库,避免程序崩溃后数据全部丢失
  • 如果你没有服务端的授权,批量发送大量请求可能属于违反服务使用条款的行为,必要请提前确认合规性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 20:33:03