locust集合点

4132 ワード

一、理解(1)すべての同時ユーザに初期化を完了させてから圧力テストを行う必要がある場合があり、これはLoadRunnerの集合点の概念に類似しており、フレームワーク自体が直接パッケージされていない
(2)locust得gevent同時得メカニズムに基づいて,geventのロックの概念を導入し,locustのフック関数に代入し,集合点統一同時概念を実現する
(3)semaphoreは、acquire()が呼び出されるたびにrelease()が呼び出されるたびに、内蔵カウンタ-1がrelease()が呼び出されるたびに、内蔵カウンタ+1カウンタが0未満になることはできません.カウンタが0の場合、acquire()は他のスレッドがrelease()を呼び出すまでスレッドをブロックします.
二、実現1、関連クラスライブラリ
from gevent._semaphore import Semaphore
all_locusts_spawned = Semaphore()
all_locusts_spawned.acquire()

2、コードインスタンス
from gevent._semaphore import Semaphore
all_locusts_spawned = Semaphore(0)
all_locusts_spawned.acquire()

def on_hatch_complete(**kwargs):
    all_locusts_spawned.release()
def on_start(self):
	all_locusts_spawned.wait()  // 
events.hatch_complete += on_hatch_complete // locust ( Locust )

class UserBehavior(TaskSet):
	@task(2)
	def index(self):
		self.client.get("/1111")
	@task(1)
	def profile(self):
		self.client.get("/")
 
class WebsiteUser(HttpLocust):
    task_set = UserBehavior
    min_wait = 2000
    max_wait = 5000