locust中的监听器

locust的master相关的几个监听器:

心跳监听器:

一个while循环,不断判断所有client当前的心跳状况,如果有一个client失去了心跳,就打印了一个警告日志,如果所有client都失去了心跳,就主动停止测试

client监听器:

一个while循环,不断接受client发送的消息,根据发送消息的类型的不同做出相应的处理

消息类型:

client_ready:client发给master的,代表client已经启动

heartbeat:client发给master的,代表client是存活状态

swap:master发给client,告诉client开始扩充用户数

swapping:client发给master的,代表正在扩充用户数

complete_swaping:client发给master,代表扩充用户完成达到执行的数量,发送完这个消息之后就开始测试了

stats:client发给master,每隔一定时间就上报结果消息给master

client_stopped:client发给master,代表测试结束了

quit:client发给master的,告诉master自己退出了,master收到消息会更新当前可用的client列表,如果所有client都quit了,那么master自己也会stop&&quit

exception:client 发给master的,master会记录异常内容

 

slave相关的事件:

心跳上报:while循环每隔一段时间就会给master发送心跳消息

消息接收:while循环:一直接受master发送的消息,根据不同的消息类型做出相应的动作

swap:master发给slave,告诉我开始扩展用户

stop:master发给slave,告诉slave停止测试

quit: master发个slave,告诉slave退出

其他的消息类型:注册了监听器的消息类型(但是不等于swap,stop,quit),然后会调用相应的监听器

别的消息类型:报错

结果上报:每隔一段时间上报结果数据

 

启动master的时候会指定期望的slave的数量,比如指定了2个,那么当master收到2个slave发来的client_ready的消息才会分别给每个slave发送spawn

的消息,并且更新状态是spawning, 当收到所有client发送的spawing_complete的消息的时候更新状态是running

收到client_stopped的消息,会把client那个节点删除

收到quit的消息,会把client删除,当收到所有的client的quit消息的时候,master停止,如果状态不是初始化,已停止,停止中,修改状态是停止中,给他每个client发送停止消息,如果是--headless,非web方式启动,给每个client发送quit消息,然后睡一会,然后自己把自己杀死

posted on 2022-05-16 11:27  朱古力88  阅读(157)  评论(0编辑  收藏  举报