使用rust开发的高性能python压测工具

💡 原文中文,约4300字,阅读约需11分钟。
📝

内容提要

atomic-bomb-engine-py是一个Python包装实现,用于压测接口。可以通过pip安装,支持异步使用。提供了单接口压测和多接口压测的方法。可以实时监听压测结果。使用时需要注意引用的包名。

🔎

延伸解读

异步压测与实时监听的设计思路

文章强调使用asyncio进行异步压测,并通过StatusListenIter和BatchListenIter实时获取结果。这种设计允许在压测过程中同时执行其他操作,如落库或监控。读者需注意,监听循环中需处理空消息并适当休眠,避免CPU空转。同时,压测任务与监听任务通过asyncio.gather并发运行,体现了异步编程在压测场景下的优势。

断言配置的简化与注意事项

文章提供了assert_option方法来简化断言字典的构造,避免手动编写易错的字典。使用时需指定jsonpath和reference_object,且jsonpath需符合JSONPath语法。若对JSONPath不熟悉,文章建议先行学习。此外,断言选项在单接口和多接口压测中均可使用,但需注意传入的是列表形式,每个元素为字典。

多接口压测的权重与包装方法

多接口压测通过batch_async方法实现,其中api_endpoints参数需传入接口信息列表。文章提供了endpoint包装方法,可方便地定义每个接口的name、url、method、weight、timeout_secs和assert_options。weight参数可能用于控制不同接口的请求比例,但文章未详细说明其具体行为。使用时需确保每个接口的配置正确,尤其是断言选项的嵌套使用。

实验性功能与运行环境要求

文章提到should_prevent参数为实验性功能,用于压测过程中阻止休眠,但需管理员权限运行,且会增加功耗。读者在无人值守场景下可考虑使用,但需权衡功耗与稳定性。此外,工具要求Python版本>=3.8,支持Windows(x86)、Linux(x86)和Mac,安装时需注意包名引用为atomic_bomb_engine而非atomic_bomb_engine_py。

❓

Q&A

atomic-bomb-engine-py是什么?

atomic-bomb-engine-py是一个用于压测接口的Python包装实现。

如何安装atomic-bomb-engine-py?

可以通过命令pip install atomic-bomb-engine-py进行安装。

如何进行单接口压测?

使用run_async方法进行单接口压测,需提供压测地址、请求方式等参数。

多接口压测如何实现?

可以使用batch_async方法进行多接口压测,需提供接口信息和其他参数。

如何实时监听压测结果?

可以使用StatusListenIter类或BatchListenIter生成器来实时监听压测结果。

使用assert_options有什么注意事项?

使用assert_options时需传入字典,可以使用包中的assert_option方法简化传递。

🏷️

标签

➡️

继续阅读