日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Python技術(shù)棧性能測試工具Locust入門

本文轉(zhuǎn)載自微信公眾號「dongfanger」,作者dongfanger。轉(zhuǎn)載本文請聯(lián)系dongfanger公眾號。

Locust是一款Python技術(shù)棧的開源的性能測試工具。Locust直譯為蝗蟲,寓意著它能產(chǎn)生蝗蟲般成千上萬的并發(fā)用戶:

Locust并不小眾,從它Github的Star數(shù)量就可見一斑:

截止文章寫作時,一共15951Star。

Locust生態(tài)良好,它已在多家外企(包括世界500強)投入使用:

如此看來,Locust是非常值得學(xué)習(xí)和掌握的一款工具。

Python的魔力在于化繁為簡,基于Python的Locust也能給仍然困惑于性能測試的我們帶來啟發(fā)。

Locust特點

  • 以純Python方式編寫用戶腳本,提供極大自由度。
  • 用戶腳本可以串行方式編寫,Locust會通過輕量級進程/協(xié)程產(chǎn)生并發(fā),無需自己做并發(fā)編程。
  • 并發(fā)量大,借助于gevent庫,Locust能產(chǎn)生成千上萬并發(fā)請求。
  • 開銷小,Locust用戶運行時開銷很小。
  • 良好的Web UI對性能結(jié)果實時監(jiān)測。
  • 能測任何系統(tǒng)任何協(xié)議,只需要寫個client即可。
  • 開放REST API,盡情發(fā)揮。

安裝Locust

需要Python版本3.6及以上。

執(zhí)行pip命令:

 
 
 
 
  1. $ pip install locust

驗證安裝成功:

 
 
 
 
  1. $ locust -V

安裝時會一并安裝依賴庫:

Installing collected packages: Werkzeug, pywin32, zope.event, greenlet, gevent, geventhttpclient, itsdangerous, flask, Flask-BasicAuth, ConfigArgParse, pyzmq, psutil, locust

能看出來flask為Locust提供了Web功能。

快速上手

使用Locust一般按照以下步驟進行:

  1. 編寫Python用戶腳本。
  2. 使用locust命令執(zhí)行性能測試。
  3. (可選)通過Web界面監(jiān)測結(jié)果。

示例代碼如下,新建locustfile.py文件:

 
 
 
 
  1. import time
  2. from locust import HttpUser, task, between
  3. class QuickstartUser(HttpUser):
  4.     wait_time = between(1, 2.5)
  5.     @task
  6.     def hello_world(self):
  7.         self.client.get("/hello")
  8.         self.client.get("/world")
  9.     @task(3)
  10.     def view_items(self):
  11.         for item_id in range(10):
  12.             self.client.get(f"/item?id={item_id}", name="/item")
  13.             time.sleep(1)
  14.     def on_start(self):
  15.         self.client.post("/login", json={"username":"foo", "password":"bar"})

路徑切換到locustfile.py文件所在目錄,執(zhí)行命令:

 
 
 
 
  1. $ locust

也可以通過-f指定某個目錄文件:

 
 
 
 
  1. $ locust -f locust_files/my_locust_file.py

運行后,打開http://127.0.0.1:8089看到Web界面:

填寫信息后,就能開始壓測了。Web界面提供了結(jié)果統(tǒng)計數(shù)據(jù):

和性能指標(biāo)走勢圖:

腳本解析

示例腳本解析如下:

 
 
 
 
  1. # Locust用戶腳本就是Python模塊
  2. import time
  3. from locust import HttpUser, task, between
  4. # 類繼承自HttpUser
  5. class QuickstartUser(HttpUser):
  6.     # 每個模擬用戶等待1~2.5秒
  7.     wait_time = between(1, 2.5)
  8.     # 被@task裝飾的才會并發(fā)執(zhí)行
  9.     @task
  10.     def hello_world(self):
  11.         # client屬性是HttpSession實例,用來發(fā)送HTTP請求
  12.         self.client.get("/hello")
  13.         self.client.get("/world")
  14.     # 每個類只會有一個task被選中執(zhí)行
  15.     # 3代表weight權(quán)重
  16.     # 權(quán)重越大越容易被選中執(zhí)行
  17.     # view_items比hello_wolrd多3倍概率被選中執(zhí)行
  18.     @task(3)
  19.     def view_items(self):
  20.         for item_id in range(10):
  21.             # name參數(shù)作用是把統(tǒng)計結(jié)果按同一名稱進行分組
  22.             # 這里防止URL參數(shù)不同會產(chǎn)生10個不同記錄不便于觀察
  23.             # 把10個匯總成1個"/item"記錄
  24.             self.client.get(f"/item?id={item_id}", name="/item")
  25.             time.sleep(1)
  26.     # 每個模擬用戶開始運行時都會執(zhí)行
  27.     def on_start(self):
  28.         self.client.post("/login", json={"username":"foo", "password":"bar"})

小結(jié)

本文先了解了Locust的背景和生態(tài),它是值得學(xué)習(xí)的,對于Python技術(shù)棧來說更加如此。接著介紹了使用pip命令安裝Locust,其中發(fā)現(xiàn)順帶安裝了flask,Locust的Web功能是flask提供的。然后給出了一段示例代碼,按照步驟上手Locust。最后對示例代碼進行了解析,淺嘗輒止。locustfile實際上該怎么寫呢?

參考資料:

https://locust.io/

https://docs.locust.io/en/stable/


網(wǎng)站題目:Python技術(shù)棧性能測試工具Locust入門
當(dāng)前鏈接:http://m.5511xx.com/article/cdppspg.html