湖州做网站建设的公司哪家好wordpress 视频付费插件
2025/12/28 18:40:05 网站建设 项目流程
湖州做网站建设的公司哪家好,wordpress 视频付费插件,网站地图html,宝安中心医院是三甲医院吗介绍分享一个开源测试工具#xff0c;atomic-bomb-engine-py:使用rust开发的python压测工具#xff0c;这个工具是由 qyzhg 同学在TesterHome社区网站的分享。 项目背景 公司的原有压测平台是由 go 开发#xff0c;使用 locust 作为压力引擎使用#xff0c;在互联网的大环…介绍分享一个开源测试工具atomic-bomb-engine-py:使用rust开发的python压测工具这个工具是由 qyzhg 同学在TesterHome社区网站的分享。项目背景公司的原有压测平台是由 go 开发使用 locust 作为压力引擎使用在互联网的大环境下开始各种降本增效性能测试的 pod 现在缩减到只有 1/8 个物理核心这种情况下locust 大概 300 并发都已经出现了 cpu 瓶颈所以需要一款性能更好的压测引擎作为替代品刚开始的时候是想直接使用 wrk 集成进项目中但是遇见了几个比较麻烦的问题:post 请求需要使用 lua无法对压测过程进行监听项目过于庞大二开十分困难所以经过调研现有的开源压测引擎没有符合现在的平台化需求的所以诞生了这个项目之所以选用 rust是因为 rust 的性能会非常的好而且高并发的压测下没有 gc 对结果产生影响引擎写完后可以直接导出一个 c 的入口go 开启 cgo 会比较简单的将项目集成。由于引擎是一个独立的项目无公司的业务部分可以直接开源。介于现在大部分测试人员的技术栈都是以 python 为主所以又在引擎外面使用 pyo3 开发了一个 python 的包装器可以让更多 python 技术栈的同学直接调用为了方便大家使用又开发了一个比较简单的前端页面可以满足简单的压测需求。项目地址python 包部分https://github.com/qyzhg/atomic-bomb-engine-py引擎部分https://github.com/qyzhg/atomic-bomb-engine前端部分https://github.com/GiantAxeWhy/atomic-bomb-engine-front项目已发布到 pip可以直接使用 pip 安装使用ci 部分使用 github actions 进行矩阵编译支持 python3.8-3.12linux-x86, mac arm、x86, win-x86应该可以覆盖大部分环境如果有特殊需求可以联系作者添加 action项目内部架构设计图项目界面使用说明准备开始安装pip install atomic-bomb-engine在 python 中导入import atomic_bomb_engine异步使用的时候还需要引用 asyncioimport asyncio主要方法说明多接口压测可以使用 batch_async 方法进行操作函数签名和解释如下async def batch_async(test_duration_secs: int,concurrent_requests: int,api_endpoints:List[Dict],step_option:Dict[str, int]None,verbose:boolFalse,should_prevent:boolFalse) -Dict:批量压测:param test_duration_secs: 测试持续时间:param concurrent_requests: 并发数:param api_endpoints: 接口信息:param step_option: 阶梯加压选项:param verbose: 打印详细信息:param should_prevent: 是否禁用睡眠使用 assert_option 方法可以返回断言选项字典assert_options[atomic_bomb_engine.assert_option($.code, 429),atomic_bomb_engine.assert_option($.code, 200)])print(result)jsonpath 如果不会用的话建议去jsonpath学习使用 step_option 方法可以返回阶梯加压选项字典def step_option(increase_step: int, increase_interval: int) - Dict[str, int]:生成step option:param increase_step: 阶梯步长:param increase_interval: 阶梯间隔同样的本包中也包含了一个对 api_endpoint 的包装endpoint 方法方便调用endpoint 中的 assert_options 中也可以套用 assert_option 方法async def run_batch():result await atomic_bomb_engine.batch_async(test_duration_secs10,concurrent_requests10,api_endpoints[atomic_bomb_engine.endpoint(nametest1,urlhttps:xxxxx1.xx,methodget,weight1,timeout_secs10,assert_options[atomic_bomb_engine.assert_option(jsonpath$.code, reference_object200)]),atomic_bomb_engine.endpoint(nametest2,urlhttps://xxxxx2.xx,methodget,weight1,timeout_secs10)])print(result)监听时可以使用 BatchListenIter 生成器async def listen_batch():iterator atomic_bomb_engine.BatchListenIter()for message in iterator:if message:print(message)else:await asyncio.sleep(0.3)同时调用时同单接口async def main():await asyncio.gather(run_batch(),listen_batch(),)if __name__ __main__:asyncio.run(main())使用内置 ui 界面导入from atomic_bomb_engine import server导入内置的 server 后可以使用内置的 http 服务器开启一个 ui 界面并且开始监听压测过程中的数据无需手动迭代数据import asyncioimport atomic_bomb_enginefrom atomic_bomb_engine import serverserver.ui(port8000)async def run_batch():result await atomic_bomb_engine.batch_async(test_duration_secs120,concurrent_requests100,step_optionatomic_bomb_engine.step_option(increase_step6, increase_interval5),verboseFalse,api_endpoints[atomic_bomb_engine.endpoint(nametest-baidu,urlhttps://baidu.com,methodGET,weight1,timeout_secs10),atomic_bomb_engine.endpoint(nametest-google, urlhttps://google.com, methodGET, weight1, timeout_secs10),])print(result)return resultif __name__ __main__:asyncio.run(run_batch())BUG 和需求由于项目开启时间较短只有短短一个月左右可能会有一些 bug 和没有做的需求如果发现了 bug 和需求都可以联系作者由于是工作之余开发可能不会太保证时效性感谢每一个认真阅读我文章的人礼尚往来总是要有的虽然不是什么很值钱的东西如果你用得到的话可以直接拿走这些资料对于【软件测试】的朋友来说应该是最全面最完整的备战仓库这个仓库也陪伴上万个测试工程师们走过最艰难的路程希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询