使用python对URL进行并发压力测试

背景:使用python进行并发请求,进行压力测试

#!/usr/bin/env python2
# -*- coding: utf-8 -*-
import threading
import urllib2
import time
from Queue import Queue
# 配置参数
url = "http://192.xxx10" # 替换为你要测试的URL
num_requests = 10000000 # 总请求数
concurrent_threads = 400 # 并发线程数
# 记录成功和失败的请求数
success_count = 0
failure_count = 0
lock = threading.Lock()
def send_request(q):
global success_count, failure_count
while not q.empty():
try:
response = urllib2.urlopen(url, timeout=5)
if response.getcode() == 200:
with lock:
success_count += 1
qps = success_count % 100
if qps == 0:
print success_count
else:
with lock:
failure_count += 1
except Exception as e:
with lock:
failure_count += 1
finally:
q.task_done()
if __name__ == "__main__":
print "Starting load test on %s" % url
start_time = time.time()
# 创建队列并填充任务
q = Queue(maxsize=num_requests)
for _ in range(num_requests):
q.put(1)
# 创建并启动线程
threads = []
for i in range(concurrent_threads):
t = threading.Thread(target=send_request, args=(q,))
t.daemon = True
t.start()
threads.append(t)
# 等待所有任务完成
q.join()
# 结束时间
end_time = time.time()
elapsed_time = end_time - start_time
print "\n--- Load Test Results ---"
print "Total Requests: %d" % num_requests
print "Concurrency Level: %d" % concurrent_threads
print "Successful Requests: %d" % success_count
print "Failed Requests: %d" % failure_count
print "Time taken for tests: %.2f seconds" % elapsed_time
print "Requests per second: %.2f" % (num_requests / elapsed_time)
posted @   帅帅啊  阅读(8)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
点击右上角即可分享
微信分享提示