`

Python: HTTP文件下载压力测试工具

 
阅读更多
import urllib.request
import os
import threading
import datetime
import time

class urlDownloadThread(threading.Thread):
    def __init__(self, threadName, url, targetFolder, targetFileName):
        threading.Thread.__init__(self)
        self.threadName = threadName
        self.url = url
        self.targetFolder = targetFolder
        self.targetFileName = targetFileName

    def run(self):
        print ("开始线程:",self.name);
        # 获得锁,成功获得锁定后返回 True
        # 可选的timeout参数不填时将一直阻塞直到获得锁定
        # 否则超时后将返回 False
        # threadLock.acquire()
        printLog(self.threadName, self.url)
        startTime = datetime.datetime.now()

        f = urllib.request.urlopen(self.url)
        data = f.read()
        
        with open(os.path.join(self.targetFolder, self.targetFolder+self.targetFileName),"wb") as f: f.write(data)

        finishTime = datetime.datetime.now()
        spendTime = finishTime-startTime
        printLog(self.threadName, spendTime)
        # 释放锁
        # threadLock.release()

    def __del__(self):
        print (self.name, "线程结束!")

def printLog(title, strLog):
    print ("[%s][%s]  %s" % (time.ctime(time.time()), title, strLog))


#url = 'https://firebasestorage.googleapis.com/v0/b/xac-download-site.appspot.com/o/applications%2Fcom.xacusa.xacpaymentbridge%2F1.0.20200331%2Fs_RP10V0331payment.apk?alt=media&token=dbc9f07f-810a-4a7c-a632-3ea6dd93449f'
#targetFolder = 'E:\\Download_Test\\'
#targetFileName = 'xacpaymentbridge'
#targetAttrName = '.apk'

url = 'https://firebasestorage.googleapis.com/v0/b/pzbp-tms-test-site.appspot.com/o/sppls%2Fsppl_ki853dbt3p01%2F1127_pzbp_os.zip?alt=media&token=214eefa5-57b3-47e1-a137-1cb790df3a3e'
targetFolder = 'E:\\Download_Test\\'
targetFileName = '2F1127_pzbp_os'
targetAttrName = '.zip'

counter = 2
threadLock = threading.Lock()
threads = []


while counter:
        #time.sleep(0.1)

        # 创建新线程
        singleThread = urlDownloadThread("Thread-"+str(counter),
                          url,
                          targetFolder,
                          targetFileName + str(counter) + targetAttrName)
        
        # 开启新线程
        singleThread.start()
        
        # 添加线程到线程列表
        threads.append(singleThread)

        counter -= 1


# 等待所有线程完成
for t in threads:
    t.join()

#TODO: 计算并统计相关测试数据
print ("主进程结束!")
分享到:
评论

相关推荐

    sqlcli:Python SQL测试工具

    SQLCli是一个主要用Python完成的,命令快速的测试工具。设计目的: 1:满足数据库方面的相关功能测试,压力测试需要。 2:能够作为一个日常小工具,进行数据库的日常操作。 3:能够根据需要快速,灵活的生成测试需要...

    pyreqr:分布式线程化python GET请求压力测试工具。 可能仍包含一些错误,请在发现错误后提出问题。 对于造成的任何损害,我概不负责。 要负责任!

    分布式线程化python GET Requests压力测试工具 需要 点安装的请求和fake_useragent 用法 运行脚本 使用预填充的设置:py(thon3)pyreqr.py -r -s -d -t 250 参数 --reckless,-ssl,-http,-domain x,-port 0,-...

    基于Python的网站路径扫描工具+源代码+文档说明

    Tag v2.0受b0uya师傅帮助,了解了Python3下的asyncio协程高并发,配合aiohttp比之前快了三倍有余,不考虑服务器压力影响下,可以与御剑这类扫描工具抗衡。 由于 Windows 下拥有众多优秀目录扫描工具,且速度很快;...

    python利用JMeter测试Tornado的多线程

      JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。 它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本...

    mail_breaker:一组用于对电子邮件帐户进行压力测试的工具和示例数据

    该存储库包含一组用于对电子邮件帐户进行压力测试的工具和示例数据。 配置 您需要创建options.cfg文件,批处理邮件发件人将从中读取要使用的电子邮件帐户。 您可以将options.cfg.demo复制为模板。 注意:文件...

    SBrick-Stress-Test:Python脚本使用BlueZ 5 gatttool从Linux系统测试Vengit SBrick的限制

    “ sbstress”(即将重命名)是一种GUI工具,其创建目的是对SBrick进行压力测试,但现已演变为多用途控制工具。 “ sbmaestro”是一种命令行工具,可从sbtress生成的文件(或其他第三方工具)中读取一系列命令,...

    stressor:对您的Web应用进行压力测试

    压力源 对您的Web应用进行压力测试。 Stressor是一种工具,可以在一个或多个并行会话中运行一系列活动。 最常见的用例是针对Web服务器使用HTTP命令运行测试脚本,以模拟一堆并行的用户会话。 结果,我们获得了有关...

    python和go语言的区别是什么

    工作中的主力语言是Python,今年要搞性能测试的工具,由于GIL锁的原因,Python的性能实在是惨淡,需要学一门性能高的语言来生成性能测试的压力端。因此我把目光放在了现在的新秀Go。经过一段时间的学习,也写了一个...

    monkey可视化工具

    Monkey是Android SDK自带的自动化测试工具,可以运行在模拟器里或实际设备中,它向系统发送随机的用户事件流,如按键输入、触摸屏输入、手势输入、Sensor 事件等,实现对正在开发的应用程序进行压力测试。...

    pyloris-3.2

    可以作为服务器的压力测试工具,也可以做DoS攻击,解压缩之后,python pyloris.py,这个文件在解压之后的根目录文件夹里面

    测试培训教材

    目前主流测试管理平台与缺陷跟踪工具: 3、QC(Quality Center)介绍 QC标准测试管理流程 QC支持的应用服务器:Jboss、WebLogic、WebSphere QC支持的数据库:Oracle、SQLServer QC支持的操作系统:Windows...

    cassandra-tools:Python Fabric脚本可帮助自动化集群的启动和管理以进行测试

    您可以使用多个配置文件进行测试,以查看8GB堆和12GB堆之间的性能差异,或者可以对yaml文件和控制群集进行多次更改,以查看性能或稳定性是否随更改而提高。 Cassandra工具从DataStax AMI Builder工具中提取了很多...

    sphivedb:SPHiveDB 是一个 SQLite 数据库服务器

    SPHiveDB 是一个 SQLite 数据库服务器。 它使用 JSON-RPC over HTTP 公开网络接口以使用 SQLite 数据库。 它支持通过东京内阁将多个 SQLite 数据库合并... 增加了压力测试工具 锁定失败问题已修复 0.4 版的变化 (06.27

    rannsaka:用于测试的混乱生成和分析工具

    这并不是要替代其他测试工具。 有人可能会认为它是一种工具,可以帮助为回归套件生成更正式的测试用例,就像用炸药捕鱼一样。未来的工作API需要更多的openstack函数可以为请求打开/关闭的验证模块利用核心暴风雨...

    speech_to_text:该项目允许用户将演讲记录转录为文本以做笔记

    该应用程序将用作将音频文件转录为带有音频转录本的textx文件以进行记录的工具。描述后端服务基于Flask库和Celery队列进行后台作业。 该应用程序托管在Heroku云服务上,并且仍处于开发阶段。试试看请转到此链接以...

    该课题为MATLAB数字仪表图像识别系统.zip

    如果您下载了本程序,但是该程序存在问题无法运行,那么您可以选择退款或者寻求我们的帮助(如果找我们帮助的话,是需要追加额外费用的)。另外,您不会使用资源的话(这种情况不支持退款),也可以找我们帮助(需要...

    aichallenge:推动AI挑战的源代码

    integration_testing与测试/压力测试竞赛设置相关的所有内容 manager/ -比赛经理,负责协调工人并计算技能等级 worker/ -运行游戏(包括编译器和沙箱)的独立worker/ sql/ -用于创建空sql数据库的文件 website/ -主...

    飞行器 Crazyflie 2.0电路图/PCB布局/固件源码官方开源-电路方案

    虽然从移动设备飞行很有效,但通过使用适用于Windows,Mac OSX和Linux的Python客户端将平台连接到计算机,可以解锁平台的真正威力。这使您可以完全使用所有扩展板,轻松修剪飞行参数,以图形方式记录数据和设置参数...

Global site tag (gtag.js) - Google Analytics