python 压测示例

1. 背景

制造300个并发请求模拟qps=300的压测环境

2. 安装相关包

pip3 install threadpool

3. Demo

import threadpool
import requests
import time
import random

params = {
    "uuid":"478baadc-8ed4-4569-bd08-100afc88501f1",
    "imei1":"",
    "gaid":"",
    "serial_number":"",
    "ip_address":"192.168.1.1041",
    "android_id":"d4a182ce3b0518f11"
}

def main(temp_params):
    response = requests.post('http://127.0.0.1:8099/search/', json=temp_params)
    # print(str(response.json()))

if __name__ == "__main__":
    pool = threadpool.ThreadPool(300)

    params_list = []
    for i in range(300):
        # 选择一些参数对其值进行随机修改,编造一些新的记录
        temp_params = params
        temp_params['uuid'] = str(random.randint(1,100))
        temp_params['imei1'] = str(random.randint(1,100))
        temp_params['gaid'] = str(random.randint(1,100))
        params_list.append(temp_params)
    # params_list = [params1, params2, params300]  # make some request params

    t0 = time.time()
    tasks = threadpool.makeRequests(main, params_list)
    [pool.putRequest(task) for task in tasks]
    pool.wait()
    t1 = time.time()
    print(t1-t0)

4. 回调函数

makeRequests的原型如下:

def makeRequests(callable_,  # 线程将要启动任务函数
    args_list,  # 要传给任务函数的参数列表
    callback=None,  # 回调函数,可以用于收集任务结束后的结果或者环境清理
    exc_callback=_handle_thread_exception
)

其中 callback必须接受2个匿名参数, 按顺序分别是WorkRequest对象和任务函数的结果。

def save_callback(request, result):
    # 第1个参数是request,可以访问request.requestID
    # 第2个参数是request执行完的结果
    print(request.requestID, result)
    with open('result.txt', 'a') as f:
        f.write(result + '\n')

 调用

requests = threadpool.makeRequests(fun1, params, save_callback)


      

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值