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

如何在JMeter中实现同时发送2个请求、待响应后循环执行10次?

实现方案

核心思路

  • 用异步编程实现并发请求,保证两个请求同时发送
  • 每次迭代中等待两个请求全部响应完成,再进入下一次循环
  • 外层包裹10次循环逻辑

Python 实现示例

先安装依赖:

pip install aiohttp

具体代码:

import asyncio
import aiohttp

async def send_single_request(session, target_url):
    """发送单个异步请求,处理响应和异常"""
    try:
        async with session.get(target_url) as resp:
            return {
                "status": resp.status,
                "content": await resp.text()[:100]  # 只取前100字符示例,可按需调整
            }
    except Exception as e:
        return {"error": str(e)}

async def main():
    target_url = "https://你的目标URL.com"
    total_loops = 10

    # 复用会话连接池,提升请求效率
    async with aiohttp.ClientSession() as session:
        for loop_idx in range(total_loops):
            print(f"===== 第 {loop_idx+1} 次迭代开始 =====")
            # 并发启动2个请求,等待所有请求完成
            request_results = await asyncio.gather(
                send_single_request(session, target_url),
                send_single_request(session, target_url)
            )
            # 打印本次迭代的结果
            for req_idx, result in enumerate(request_results):
                print(f"请求 {req_idx+1} 结果: {result}")
            print("===== 本次迭代结束 =====\n")

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

关键细节说明

  • asyncio.gather():会同时执行传入的所有协程,必须等所有请求都拿到响应后才会继续往下执行,完美满足“等所有响应完成再进下一次迭代”的要求
  • aiohttp.ClientSession:复用HTTP连接池,避免每次请求都重新建立连接,能显著提升请求效率
  • 异常捕获:单个请求失败不会导致整个程序终止,会返回错误信息继续执行

Node.js 实现示例

先安装依赖:

npm install axios

具体代码:

const axios = require('axios');

async function sendSingleRequest(targetUrl) {
    try {
        const resp = await axios.get(targetUrl);
        return {
            status: resp.status,
            data: resp.data.slice(0, 100)  // 取前100字符示例
        };
    } catch (e) {
        return { error: e.message };
    }
}

async function main() {
    const targetUrl = "https://你的目标URL.com";
    const totalLoops = 10;

    for (let loopIdx = 0; loopIdx < totalLoops; loopIdx++) {
        console.log(`===== 第 ${loopIdx+1} 次迭代开始 =====`);
        // 并发执行两个请求,等待全部完成
        const requestResults = await Promise.all([
            sendSingleRequest(targetUrl),
            sendSingleRequest(targetUrl)
        ]);
        // 输出结果
        requestResults.forEach((result, reqIdx) => {
            console.log(`请求 ${reqIdx+1} 结果:`, result);
        });
        console.log("===== 本次迭代结束 =====\n");
    }
}

main();

Node.js 版本说明

  • Promise.all():和Python的asyncio.gather()作用一致,等待所有Promise完成后返回结果数组
  • 外层for循环会严格等待每次Promise.all()执行完毕,才进入下一次迭代

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 18:45:21