Week07 作业
发布于: 2020 年 07 月 22 日
- 用你熟悉的编程语言写一个 web 性能压测工具,输入参数:URL,请求总次数,并发数。输出参数:平均响应时间,95% 响应时间。用这个测试工具以 10 并发、100 次请求压测 www.baidu.com。 
from concurrent.futures import ThreadPoolExecutorimport timefrom queue import Queueimport HttpInterfaceTestimport uuidtest_queue = Queue(maxsize=100000)def create_test(publickey, key, usernames, param, url, timeout=1000):    """    生产者创建测试对象    :param publickey:    :param key:    :param usernames:    :param param:    :param url:    :param timeout:    :return:    """    ti = HttpInterfaceTest(publickey=publickey,                           key=key,                           usernames=usernames,                           param=param,                           url=url,                           timeout=timeout)    test_queue.put(ti)def call_test(q):    """    调取测试接口    :param q:    :return:    """    while not q.empty():        ti = q.get()        ti.test_http('json')def exec_pressuretest(index, pcount, ccount):    """    压力测试  调取总次数 = index*pcount    :param index:    :param pcount:    :return:    """    for i in range(0, index):        with ThreadPoolExecutor(pcount) as Producer:            for p in range(pcount):                base_url = 'http://www.baidu.com/'                #publickey = '123456789'                #key = 'A123B456C789D123'                #usernames = ['Jike', 'Jone', 'Ada']                param = uuid.uuid1()                Producer.submit(create_test, param, base_url)                print(str(p)+' -> '+str(param))        Producer.shutdown()        with ThreadPoolExecutor(ccount) as Consumer:            for c in range(ccount):                Consumer.submit(call_test, test_queue)        Consumer.shutdown()if __name__ == '__main__':    exec_pressuretest(100, 500, 400)
划线
评论
复制
发布于: 2020 年 07 月 22 日阅读数: 167

熊威
关注
还未添加个人签名 2019.06.12 加入
还未添加个人简介











 
    
评论