locust案例demo實踐

2022-08-02 06:51:08 字數 2654 閱讀 1722

**自:

提到效能測試,大部分小夥伴想到的就是lr和jmeter這種工具,小編一直不太喜歡寫這種工具類的東西,我的原則是能用**解決的問題,盡量不去用工具。

python裡面也有乙個效能測試框架locust,本篇簡單的介紹locust的基本使用,希望越來越多的小夥伴能一起愛上它!

環境準備:

python3.6

windows電腦

locust

locust是一款易於使用的分布式使用者負載測試工具。它用於對**(或其他系統)進行負載測試,並確定系統可以處理多少併發使用者。

這個想法是,在測試期間,一群蝗蟲(locust)會攻擊你的**。您定義了每個蝗蟲locust(或測試使用者)的行為,並且實時地從web ui監視群集過程。這將有助於您在讓真正的使用者進入之前進行測試並識別**中的瓶頸。

locust完全基於事件,因此可以在一台計算機上支援數千個併發使用者。與許多其他基於事件的應用程式相比,它不使用**。相反,它通過協程(gevent)機制使用輕量級過程。每個蝗蟲蜂擁到你的**實際上是在自己的程序內執行(或者是greenlet,這是正確的)。這允許您在py​​thon中編寫非常富有表現力的場景,而不會使**複雜化。

** gevent是第三方庫,通過greenlet實現協程。greenlet是python的並行處理的乙個庫。 python 有乙個非常有名的庫叫做 stackless ,用來做併發處理, 主要是弄了個叫做tasklet的微執行緒的東西, 而greenlet 跟stackless的最大區別是greenlet需要你自己來處理執行緒切換, 就是說,你需要自己指定現在執行哪個greenlet再執行哪個greenlet。**

locust支援python 2.7, 3.4, 3.5, and 3.6的版本,小編的環境是python3.6直接用pip安裝就行

$ pip install locustio

安裝完成後,使用pip檢視版本號0.9.0

$ pip show locustio

使用--help檢視幫助資訊

$ locust --help

locust裡面請求是基於requests的,每個方法請求和requests差不多,請求引數、方法、響應物件和requests一樣的使用,之前學過requests庫的,這裡就非常簡單了

'''使用者行為:開啟我的部落格首頁demo'''

@task(1)

def open_blog(self):

# 定義requests的請求頭

min_wait = 3000 # 單位毫秒

max_wait = 6000 # 單位毫秒

if __name__ == "__main__":

import os

os.system("locust -f demo.py --host=")

**註解:

新建乙個類blogdemo(taskset),繼承taskset,該類下面寫一些準備請求的行為(訪問的介面)

裡面的self.client呼叫get和post方法,跟requests是一樣的

@task裝飾該方法表示為使用者行為。括號裡面引數表示該行為挑選執行的權重,數值越大,執行頻率越高,不設定預設是1

websiteuser()類用於設定效能測試。

task_set :指向乙個定義了的使用者行為類。

min_wait :使用者執行任務之間等待時間的下界,單位:毫秒。

max_wait :使用者執行任務之間等待時間的上界,單位:毫秒。

啟動locust可以直接在pycharm裡面執行上面的**,執行後編輯器出現兩行

[2018-09-12 23:23:57,500] desktop-hj487c8/info/locust.main: starting web monitor at *:8089

[2018-09-12 23:23:57,500] desktop-hj487c8/info/locust.main: starting locust 0.9.0

也可以通過cmd執行

$ locust -f demo.py --host=

8089是該服務啟動的埠號。由於是在本機上搭建的locust,所以可以直接在瀏覽器輸入http://localhost:8089/開啟,

如果是在其它機器上搭建的locust服務,那就通過http://其它機器ip:8089/開啟

設定虛擬使用者數30,每秒啟動5個使用者,點選start swarming 開始執行

點stop可以停止測試

new test可以重新設定使用者數

charts圖示展示

三個圖示分別是

vue 元件化綜合案例demo

1.技術棧 vue 元件化編碼 父子元件資料互動 parent watch 深度監視 本地快取 localstorage js高階函式靈活使用 按鍵修飾符使用 2.編碼 todo container header todos todos footer div template import head...

Oracle PL SQL入門案例實踐

正在看的oracle教程是 oracle pl sql入門案例實踐。前面已經了解了關於pl sql程式設計的基礎,本文將結合乙個案例來加深對這些知識點的理解。一 案例介紹 某資料庫有兩張表,是關於某公司員工資料 薪水和部門資訊的,它們分別是emp表和dept表,兩張表的結構如下 要求如下 1 按照上...

demo41 案例練習

doctype html html head meta charset utf 8 title title style type text css con img 設定float的時候要先設定width p 程式設計師 英文programmer 是從事程式開發 維護的專業人員。一般將程式設計師分為程...