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

Python使用requests同时发送多组不同参数POST请求的最快方式是什么

4个POST请求并行发送的最快实现方案

原有代码为同步串行执行逻辑,4个请求依次等待上一个请求响应完成才会发送,总耗时为4次请求的耗时之和。要实现最快发送,核心逻辑是并行发送请求,总耗时近似等于4个请求里响应最慢的那个的耗时,常用的有两种成熟实现方案:


方案1:ThreadPoolExecutor线程池实现(零成本适配原有requests代码)

不需要修改原有请求逻辑,仅通过线程池并行执行任务即可,改造成本极低:

import requests
from concurrent.futures import ThreadPoolExecutor

# 把所有payload整理为列表
payloads = [payload1, payload2, payload3, payload4]

def post_request(payload):
    return requests.post("abc.com", data=payload)

# 开启4个线程同时执行4个请求任务
with ThreadPoolExecutor(max_workers=4) as executor:
    results = list(executor.map(post_request, payloads))

执行完成后results列表就是4个请求的响应对象,顺序和payloads的顺序一一对应。

方案2:aiohttp异步客户端实现(性能更高,适合后续扩展)

requests本身是同步HTTP库,替换为异步的aiohttp可以进一步降低资源占用,并发效率更高,尤其后续请求量上涨的时候优势会更明显:

import asyncio
import aiohttp

payloads = [payload1, payload2, payload3, payload4]

async def async_post(session, payload):
    async with session.post("abc.com", data=payload) as response:
        # 可以根据需求调整返回内容,比如status、response.json()等
        return await response.text()

async def main():
    async with aiohttp.ClientSession() as session:
        # 同时发起所有请求
        tasks = [async_post(session, p) for p in payloads]
        results = await asyncio.gather(*tasks)
        return results

results = asyncio.run(main())

方案选择建议

  • 仅需要临时改造这4个请求、不想调整原有代码逻辑,直接选方案1即可
  • 项目后续有扩展更多并发请求的需求,优先选方案2,性能上限更高

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 09:36:02