2017-04-19 4 views
1

"for"の場合、 "req/s"が高すぎません。私はlocustで "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

が、私はすべてがOKである、 "のために" 使用しなかった場合は....

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ループが実行されています複数の投稿要求Locustユーザーはシステムを攻撃します。ファイルの大きさに応じて、その20回の反復と言いましょう。つまり、各ユーザーが並行して20回実行され、テストが終了したことを意味します。

開始時間と終了時間を見てみると、最初のテストは約8秒で終了し、もう一方のテストは約30秒かかる。

第2のテストでは、5人のローカストユーザーがユーザーあたり1回のポストリクエストを実行し、100回のリクエストが満たされるまで一度に1つずつ実行を継続する必要があります。

+0

ありがとうございます〜 – Lucifer

関連する問題