当我在蝗虫中使用 "for" 时,如何控制流量?
How can I control traffic, when I use "for" in locust?
当我在 locust 中使用“for”时,我不知道为什么“req/s”太高了。
class UserBehavior(TaskSet):
@task(1)
def start_congche(self):
filename = 'D:\测试\项目\精励评分\从车评分/阳光压力测试数据.csv'
with open(filename) as f:
reader = csv.DictReader(f)
for test in reader:
self.client.post("/DataPreFillServer/DataPreFillProductService", first +test["vin"] + vincode +test["vehicle_code"] + vehicleCode + end)
class WebsiteUser(HttpLocust):
task_set = UserBehavior
host = "http://10.10.6.12:8080"
min_wait = 1000
max_wait = 1000
但是,如果我不使用“for”,一切都可以....
class UserBehavior(TaskSet):
@task(1)
def start_congche(self):
self.client.post("/DataPreFillServer/DataPreFillProductService", first + vincode + vehicleCode + end)
我相信您在第一种方法中看到 20 requests/second 的原因是 for 循环每次执行 multiple post 请求五个 Locust 用户攻击系统。根据文件的大小,假设它有 20 次迭代,这意味着每个用户可能并行执行 20 次并且测试结束。
看看你的开始和结束时间,第一个测试在大约 8 秒内完成,而另一个大约需要 30 秒左右。
在第二个测试中,五个蝗虫用户每个用户执行一个 post 请求,并且必须返回并继续一次执行一个,直到满足 100 个请求。
使用队列的class..
每次从队列中取值。
user_data_queue = queue.Queue()
filename = 'XXXXXXXX.csv'
with open(filename) as f:
reader = csv.DictReader(f)
for test in reader:
data = {
"vin": test["vin"],
"vehicle_code": test["vehicle_code"],
}
user_data_queue.put_nowait(data)
try:
data = self.locust.user_data_queue.get_nowait()
except queue.Empty:
exit(0)
self.client.post("/DataPreFillServer/DataPreFillProductService",payload)
当我在 locust 中使用“for”时,我不知道为什么“req/s”太高了。
class UserBehavior(TaskSet):
@task(1)
def start_congche(self):
filename = 'D:\测试\项目\精励评分\从车评分/阳光压力测试数据.csv'
with open(filename) as f:
reader = csv.DictReader(f)
for test in reader:
self.client.post("/DataPreFillServer/DataPreFillProductService", first +test["vin"] + vincode +test["vehicle_code"] + vehicleCode + end)
class WebsiteUser(HttpLocust):
task_set = UserBehavior
host = "http://10.10.6.12:8080"
min_wait = 1000
max_wait = 1000
但是,如果我不使用“for”,一切都可以....
class UserBehavior(TaskSet):
@task(1)
def start_congche(self):
self.client.post("/DataPreFillServer/DataPreFillProductService", first + vincode + vehicleCode + end)
我相信您在第一种方法中看到 20 requests/second 的原因是 for 循环每次执行 multiple post 请求五个 Locust 用户攻击系统。根据文件的大小,假设它有 20 次迭代,这意味着每个用户可能并行执行 20 次并且测试结束。
看看你的开始和结束时间,第一个测试在大约 8 秒内完成,而另一个大约需要 30 秒左右。
在第二个测试中,五个蝗虫用户每个用户执行一个 post 请求,并且必须返回并继续一次执行一个,直到满足 100 个请求。
使用队列的class.. 每次从队列中取值。
user_data_queue = queue.Queue()
filename = 'XXXXXXXX.csv'
with open(filename) as f:
reader = csv.DictReader(f)
for test in reader:
data = {
"vin": test["vin"],
"vehicle_code": test["vehicle_code"],
}
user_data_queue.put_nowait(data)
try:
data = self.locust.user_data_queue.get_nowait()
except queue.Empty:
exit(0)
self.client.post("/DataPreFillServer/DataPreFillProductService",payload)