2017-04-19 23 views
1

中使用“for”时,我不明白为什么“req/s”太高。当我在蝗虫中使用“for”时,我如何控制流量,当我在蝗虫

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 

enter image description here

,但如果我没有用 “为”,一切都很好....

class UserBehavior(TaskSet): 

     @task(1) 
     def start_congche(self): 
      self.client.post("/DataPreFillServer/DataPreFillProductService", first + vincode + vehicleCode + end) 

enter image description here

回答

1

使用队列的类。 每次从队列中取值。

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) 
0

我相信你为什么看到20的原因请求/秒在第一种方法是for循环执行多个发布请求每次五个之一蝗虫用户攻击系统。取决于文件的大小,假设它有20次迭代,这意味着每个用户可能并行执行20次并且测试结束。

看看你的开始和结束时间,第一次测试在约8秒内完成,而另一个测试约需要30秒。

在第二个测试中,五名蝗虫用户为每个用户执行一个单独的发布请求,并且必须一次返回并继续执行一个,直到满足100个请求为止。

+0

非常感谢你〜 – Lucifer

相关问题