2017-04-19 20 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

相關問題