• 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消息,然后睡一会,然后自己把自己杀死

  • 相关阅读:
    Leetcode 1414. 和为 K 的最少斐波那契数字数目(贪心)
    A ConvNet for the 2020论文阅读笔记
    Leetcode 957. N 天后的牢房(暴力)
    洛谷P1879 [USACO06NOV]Corn Fields G(状压DP)
    CF1553D Backspace(双指针)
    26
    37
    36
    3.4
    3.3
  • 原文地址:https://www.cnblogs.com/zhaijing/p/16276332.html
Copyright © 2020-2023  润新知