最近公司在搞压测 笔者也是查了很多工具
lr收费 用不起 jm 测试机扛不住 最后就选择了locust
使用中有个场景覆盖不到 就是几个task中 有一个需要并发提交,其余task正常运行即可
也是查了一些资料官网上给的钩子方法 是基于协程的运行开始前可实现并发一旦运行开始即开始即不可控
话不多说直接上代码
from gevent._semaphore import Semaphore
from locust import HttpLocust, TaskSet, events, task, HttpUser
all_locusts_spawned = Semaphore()
all_locusts_spawned.acquire()
class TestUserTask(TaskSet):
@task()
def job(self):
print("进来了{}".format(self.user))
data = self.user.myflag.get(0)
is_wait = data['is_wait']
flag = data['flag']
print("flag={}".format(flag))
if flag >= 19:
is_wait = True
print("is_wait={}".format(is_wait))
if is_wait:
flag = flag - 1
if flag == 0:
is_wait = False
data = {"flag": flag, "is_