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

如何用JMeter或Python并行发送指定次数的单个GET请求?

使用JMeter实现并行发送指定次数GET请求

方法1:标准线程组实现

  • 新建线程组,将「线程数」设置为100(对应并行请求数量),「循环次数」设为1
  • 在线程组下添加HTTP请求采样器,配置目标URL、请求参数、请求头等信息
  • 可选优化:勾选线程组的「延迟创建线程直到需要」,并将「线程启动时间(秒)」设为0,消除线程启动延迟,确保请求真正并行发送
  • 添加「查看结果树」「聚合报告」等监听器,用于验证请求结果、统计性能数据

方法2:纠正bzm Parallel Executor的用法

若你之前使用该组件失败,大概率是配置有误,正确步骤如下:

  • 添加bzm Parallel Controller到测试计划中
  • 在控制器下添加HTTP请求采样器(仅需添加1个)
  • 设置控制器的「并行度」为100,「循环次数」为1,控制器会自动并行执行100次内部的请求
  • 注意:若请求数量较大,需调整JMeter堆内存(修改jmeter.bat/jmeter.sh中的HEAP参数,例如HEAP="-Xms1g -Xmx2g"),避免内存溢出

使用Python实现并行发送指定次数GET请求

方法1:多线程实现(基于threading和requests)

适合快速实现,代码简洁直观:

import threading
import requests

def send_get_request(url):
    try:
        response = requests.get(url)
        print(f"请求状态码: {response.status_code}, 线程ID: {threading.get_ident()}")
        # 可按需处理响应,如解析JSON、保存结果等
    except Exception as e:
        print(f"请求失败: {str(e)}, 线程ID: {threading.get_ident()}")

if __name__ == "__main__":
    target_url = "https://你的目标URL.com"
    request_count = 100
    threads = []
    
    for _ in range(request_count):
        thread = threading.Thread(target=send_get_request, args=(target_url,))
        threads.append(thread)
        thread.start()
    
    # 等待所有线程执行完成
    for thread in threads:
        thread.join()
    
    print("所有请求执行完毕")

方法2:异步IO实现(基于asyncio和aiohttp)

性能更优,适合大数量请求场景:

import asyncio
import aiohttp

async def send_async_get(url, session):
    try:
        async with session.get(url) as response:
            print(f"请求状态码: {response.status}, 任务ID: {id(asyncio.current_task())}")
            # 可选:获取响应内容
            # content = await response.text()
    except Exception as e:
        print(f"请求失败: {str(e)}, 任务ID: {id(asyncio.current_task())}")

async def main():
    target_url = "https://你的目标URL.com"
    request_count = 100
    
    async with aiohttp.ClientSession() as session:
        # 创建100个异步请求任务
        tasks = [send_async_get(target_url, session) for _ in range(request_count)]
        await asyncio.gather(*tasks)

if __name__ == "__main__":
    asyncio.run(main())
    print("所有异步请求执行完毕")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 10:20:31