ローカストパフォーマンス-ゼロファンデーションエントリーシリーズ(5)

1つ:タスク属性を記述する別の方法:


まず、スクリプトのサンプルコードをアップロードします

イナゴインポートユーザーから、定数

def task_1(l):
    print( "This is task 1")

def task_2(l):
    print( "this is task_2")

class MyUser(User):
    tasks = {task_1:1、task_2: 2}  
    wait_time = constant(1)


コードの解釈:

1〜7行目は以前に紹介されているので、ここではスキップしてください。

9行目はユーザークラスを定義しています。

10行目は、タスク属性値の定義です。ここでの属性値は、ローカストパフォーマンス-ゼロベースの概要(4)-タスク属性値の使用法記事で紹介したタスク属性と同じではありません。ここでは、タスクの定義を除いて、辞書形式を使用します  。の範囲外では、各タスクの重みも設定されます。たとえば、task_1の重みは1、task_2の重みは2であるため、トラフィックの3分の1がtask_1を実行し、残りのトラフィックはtask_2を実行します。このモデルはよりシンプルで理解しやすいです。実際、著者の実験を通じて、理解しやすい重みでタスク属性を記述する方法があります。詳細は次のとおりです。

タスク= [task_1、task_2、task_2]

タスク属性は引き続きリストの形式で割り当てられますが、リストにはtask_2が2回表示され、間接的に重み設定の目的を達成します。この方法は少し不器用なだけですが、実際には理解しやすいです。


2:ユーザーインスタンス化表示

Locustは、仮想ユーザーをシミュレートするためにUserクラス、またはHttpUserクラスなどのそのサブクラスを継承する必要があることを知っています。では、複雑なシーンシミュレーションで、さまざまなユーザークラスが表示された場合、現在の仮想ユーザーのIDを特定または識別する方法は?Locustは、仮想ユーザーのIDを取得する方法を提供します。具体的なコードは次のとおりです。

イナゴからインポートUser、task、constant 

class MyUser(User):
    wait_time = constant(1)
    @task 
    def my_task(self):
        print( "User instance(%r)execute my_task"%self)

上記のコードの7行目に示されているように、%rはプレースホルダーであり、Userインスタンスのコンテキスト情報を取得できます。%rである必要があることに注意してください。スクリプトの実行後、次のようにユーザーのアップとダウンの情報を取得します。2つの仮想ユーザーがあり、これら2つの仮想ユーザーがMyUserユーザークラスを継承していることがはっきりとわかります。

ハッチングされたすべてのユーザー:MyUser:2(0はすでに実行中)
ユーザーインスタンス(<file6.MyUserオブジェクトat 0x10a61b2e8>)実行my_task
ユーザーインスタンス(<file6.MyUserオブジェクトat 0x10a688748>)実行my_task
ユーザーインスタンス(<file6.MyUserオブジェクトat 0x10a61b2e8 >)my_task
ユーザーインスタンスの実行(<file6.MyUserオブジェクト0x10a688748>)my_task
ユーザーインスタンスの実行(<file6.MyUserオブジェクト0x10a61b2e8>)my_task
ユーザーインスタンスの実行(<file6.MyUserオブジェクト0x10a688748>)my_task
ユーザーインスタンスの実行(<< file6.MyUserオブジェクト(0x10a61b2e8>)でmy_taskを実行してい
ます...


おすすめ

転載: blog.51cto.com/13734261/2543011