import requests
import time
from concurrent.futures import ThreadPoolExecutor
from loguru import logger
# API 接口 URL
API_URL = "https://.../front_end/api/shichang/" # 可以替换为你自己的接口 URL
headers = {
'Authorization': ''
}
# 定义并发请求的数量
CONCURRENCY = 50 # 例如,模拟 10 个并发请求
# 用于统计成功与失败的计数
success_count = 0
failure_count = 0
total_time = 0
# 请求函数,用于测试接口
def test_request():
global success_count, failure_count, total_time
start_time = time.time() # 记录请求开始时间
try:
response = requests.get(API_URL, headers=headers)
response.raise_for_status() # 如果响应状态码不是 2xx,抛出异常
end_time = time.time() # 请求结束时间
duration = end_time - start_time
total_time += duration
success_count += 1 # 请求成功计数
#print(f"请求成功,耗时: {duration:.2f} 秒")
except requests.exceptions.RequestException:
end_time = time.time()
duration = end_time - start_time
total_time += duration
failure_count += 1 # 请求失败计数
#print(f"请求失败,耗时: {duration:.2f} 秒")
# 并发执行测试函数
def execute_concurrent_requests():
global success_count, failure_count, total_time
# 使用线程池模拟并发请求
with ThreadPoolExecutor(max_workers=CONCURRENCY) as executor:
futures = [executor.submit(test_request) for _ in range(CONCURRENCY)]
for future in futures:
future.result() # 等待所有请求完成
# 测试并发请求的时间和成功/失败计数
def test_api_concurrent_performance():
execute_concurrent_requests()
# 统计结果
logger.info(f"总请求数: {CONCURRENCY}")
logger.success(f"成功请求数: {success_count}")
logger.error(f"失败请求数: {failure_count}")
logger.success(f"平均每个请求的耗时: {total_time / CONCURRENCY:.2f} 秒")
assert success_count > 0, "没有成功的请求"
test_api_concurrent_performance()
python --简单的并发测试
最新推荐文章于 2025-06-25 23:27:03 发布