Locust のスクリプトで、各イベントをフックにリスナーを登録することができる。
https://docs.locust.io/en/stable/extending-locust.html
より詳しくはこちら
https://docs.locust.io/en/stable/api.html#event-hooks
headless
や autostart
、Web UIで実行した場合のどれでも同じようなタイミングで実行される
自動実行時にtest_startイベントに時間のかかる処理を登録するときの注意
Locust 自動実行する のようにして --run-time
を指定しているのにその時間実行されなかったり、もっと悪いことに実行が終了しないことがあった。
調査したところ test_start
イベントで時間のかかる処理を実行していた。
この中の処理も run-time
の実行時間に含まれるため、その分負荷試験の実行時間が減っていた。
さらに、test_start
が run-time
の時間を過ぎると、負荷試験を終了する処理はすでに呼ばれたことになっていてもう呼ばれない。その上で test_start
が終わったタイミングで負荷試験が開始してしまうので終了しない。負荷試験を開始しないでほしいのだがそうなっていない。
コードではこの辺
https://github.com/locustio/locust/blob/b7a63e4e2f302e2273bc22bb8f57a54bfa7b9c83/locust/main.py#L548
--run-time argument includes test_start event duration since the upgrade to v2 · Issue #2319 · locustio/locust
Describe the bug The behaviour of --run-time argument has changed since the upgrade to v2. In later versions, it controls the total duration of the test including test_start event, while in v1 it d...
対策としては、実行タイミングが変わってしまうが init
に処理を移すことかな…