locust - 在分布式模式工作者中模仿 test_start test_stop 事件
问题描述
在我的 locustfile 中,我定义了 test_on_start 和 test_on_stop 事件来读取测试所需的文件并在测试结束时在 CSV 中写入详细的统计数据。在分布式模式下运行时,这些事件发生在主节点上,而不是工作节点上。我正在为任务序列中的每个任务组装详细统计信息列表,并在测试结束时在测试停止时编写一个 CSV 文件。我发现this stackoverflow question它引用了设置和拆卸。我将这些添加到我的class User(HttpUser):
,但它们似乎没有被执行。
当测试以分布式模式在工作人员上运行时,我如何模拟这些事件?
有没有更好的办法?
我已经在使用用户 on_start 和 on_stop - 我的 on_start 调用一个函数来从列表中选择一个随机用户,该列表是在@events.test_start.add_listener
触发时创建的,这只发生在主服务器上而不是工人身上,所以工人没有任何用户登录数据。
每次调用 User on_start 方法时,打开文件、读取文件、随机选择一个用户并关闭它似乎会适得其反。用户 on_start 还设置了迭代列表 [],这是我存储每个任务的时间的地方。
当任务序列完成时,意味着执行了最后一个任务,我执行self.interrupt()
which runs on_stop
,这是我获取迭代时间的地方,并将它们放入第二个列表中,该列表稍后使用 CSV 模块编写。也许在期间将数据写入 CSV 会更好on_stop
解决方案
单个用户的设置/拆卸已被删除(因为它们令人困惑,因为它是在该用户类的第一个实例上运行的,当人们在该实例上设置属性时,由于后来的实例没有得到这一事实而感到非常困惑) . Tbh,我希望它们刚刚被类方法取代......
不过,用户仍然有 on_start/stop 方法,如果你将它与标志结合起来,它可能会做你想做的事。像这样的东西:
class MyUser(HttpUser):
stopped = False
...
def on_stop(self):
if not MyUser.stopped:
MyUser.stopped = True
# write your csv
# this doesnt guarantee that all your Users are finished though.
https://docs.locust.io/en/stable/writing-a-locustfile.html#on-start-and-on-stop-methods
推荐阅读
- css - 我想让一个元素悬垂到它上面的元素中
- css - 如何使 SCSS 中的字体 URL 与不同的 Flask 应用程序根一起工作
- angular - 角十进制管道不显示前导零?
- python - Python HTML解析器分页
- flutter - ImagePicker 结果不显示在 PhotoView 中
- c# - 编译Relaxatinos 和SecurityPermissions
- python - 使用 Pandas 导入时如何在 .txt 文件中跳过大于/小于 6 的值的行
- ruby-on-rails - Bootstrap:按钮样式在 React/Rails/Webpacker 设置中未正确显示
- debugging - Clion 调试会话:/proc/self/cwd 中的断点定位
- javascript - 在 React.js 中按字母顺序(升序/降序)排序 ul 列表项时遇到问题