最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python locust工具使用詳解

 更新時間:2021年03月09日 10:27:57   作者:bai_nian_min_guo  
這篇文章主要介紹了Python locust工具使用詳解,幫助大家更好的理解和學習使用python,感興趣的朋友可以了解下

今年負責部門的人員培養(yǎng)工作,最近在部門內(nèi)部分享和講解了locust這個工具,今天再博客園記錄下培訓(xùn)細節(jié)。相信你看完博客,一定可以上手locust這個性能測試框架了。

一、簡介

1、優(yōu)勢

locust是python語言開發(fā)的一款的開源的的性能測試框架,他比jmeter更加的輕量級,主要是通過協(xié)程(gevent)的方式去實現(xiàn)并發(fā),通過協(xié)程的方式可以大幅提高單機的并發(fā)能力,同時避免系統(tǒng)級的資源調(diào)度。locust具有開源性、分布式、支持高并發(fā),支持webUI的操作方式。

2、劣勢

locust的圖表功能較弱,只展示了很少的數(shù)據(jù)

locust不支持監(jiān)控服務(wù)端的狀態(tài),需要借助第三方工具,或者自己寫代碼去實現(xiàn)

二、安裝

locust的安裝非常簡單,直接通過pip的方式就可以安裝

	
pip install locust

三、locust的庫和方法介紹

1、from locust import task

通過task可以把某個函數(shù)指定為任務(wù),直接@task裝飾對應(yīng)的函數(shù)即可,在@tast(n)中可以有一個參數(shù)n,意思是這個任務(wù)的占比是多少

2、from locust import TaskSet

需要定義一個類,繼承TaskSet這個類,這個是是一個任務(wù)集的概念,這個類中可以包括多個task

3、from locust import HttpUser

需要定義一個類,這個類要繼承HttpUser,通過這個定義的類我們可以執(zhí)行具體的任務(wù)集

看了上面的介紹,可能大家有點云里霧里的,下面我們由淺入深看代碼

四、實戰(zhàn)代碼V1.0(入門代碼)

1、代碼如下

from locust import HttpLocust
from locust import HttpUser
from locust import task
from locust import TaskSet
#指定一個任務(wù)集
class My_task_set(TaskSet):
 
 
    #這是某個任務(wù),30是比例,比如這里是30/50
    @task(30)
    def getindex1(self):
        # client就是個requests對象
        # catch_response,告訴locust如何判斷請求失敗還是成功
        res  = self.client.get("/bainianminguo/p/10952586.html")
 
    @task(20)
    def getindex2(self):
        # client就是個requests對象
        res = self.client.get("/bainianminguo/p/7253930.html")
 
 
class WebSite(HttpUser):
    # 指定要執(zhí)行哪個任務(wù)集
    tasks = [My_task_set,]
    # 請求和請求之間最小的間隔時間
    min_wait = 1000
    # 請求和請求之間最大的間隔時間
    max_waif = 2000

2、進入代碼的目錄,執(zhí)行如下命令

3、打開瀏覽器,輸入http://localhost:8089/

4、參數(shù)講解

Number of total users to simulate 模擬的總的用戶數(shù)

Spawn rate 每秒鐘新增的用戶數(shù)

五、實戰(zhàn)代碼V1.1(入門代碼)

1、任務(wù)集類中的on_start方法

class My_task_set(TaskSet):
 
    #添加初始化方法
    def on_start(self):
        print("類似類中的構(gòu)造方法,每個用戶在任務(wù)開始前,只執(zhí)行一次,在這里可以定義一個對象的屬性,這樣其它測試集就可以使用這個屬性")

這個方法類似pytest框架中的前置條件或者說是面向?qū)ο笾械臉?gòu)造方法

2、任務(wù)集類中的on_start方法

def on_stop(self):
    print("類似類中的后置方法,每個用戶在任務(wù)開始后,只執(zhí)行一次,在這里可以定義一個對象的屬性,這樣其它測試集就可以使用這個屬性")

六、實戰(zhàn)代碼V1.2(入門代碼)

1、如何判斷請求是失敗還是成功

2、然后再響應(yīng)的消息中指定判斷邏輯即可,success即為成功,failure即為失敗

七、實戰(zhàn)代碼V1.3(全量代碼)

from locust import HttpLocust
from locust import HttpUser
from locust import task
from locust import TaskSet
 
# locust中的client會自動幫我們處理cookies。類似request.session(),所以如果我們登陸的時候,只需要在on_start中登陸一次就可以了
 
# 如果在locust中,如果url是不需要統(tǒng)計,則我們不要用clent去訪問api,應(yīng)該用request去訪問,這樣就locust就不會統(tǒng)計request庫發(fā)起的請請求
#指定一個任務(wù)集
class My_task_set(TaskSet):
 
    #添加初始化方法
    def on_start(self):
        print("類似類中的構(gòu)造方法,每個用戶在任務(wù)開始前,只執(zhí)行一次,在這里可以定義一個對象的屬性,這樣其它測試集就可以使用這個屬性")
 
    def on_stop(self):
        print("類似類中的后置方法,每個用戶在任務(wù)開始后,只執(zhí)行一次,在這里可以定義一個對象的屬性,這樣其它測試集就可以使用這個屬性")
 
    #這是某個任務(wù),30是比例,比如這里是30/50
    @task(30)
    def getindex1(self):
        # client就是個requests對象
        # catch_response,告訴locust如何判斷請求失敗還是成功
        res  = self.client.get("/bainianminguo/p/10952586.html",catch_response=True)
        if res.code == 200:
            res.success()
        else:
            res.failure("ff")
        print(res)
    @task(20)
    def getindex2(self):
        # client就是個requests對象
        res = self.client.get("/bainianminguo/p/7253930.html")
        print(res)
 
class WebSite(HttpUser):
    # 指定要執(zhí)行哪個任務(wù)集
    # task_set = My_task_set
 
    tasks = [My_task_set,]
    # 請求和請求之間最小的間隔時間
    min_wait = 1000
    # 請求和請求之間最大的間隔時間
    max_waif = 2000
 
 
# Number of total users to simulate   模擬的用戶數(shù)
# Spawn rate                          每秒鐘產(chǎn)生的用戶數(shù)

八、常見問題

1、cookies

locust中的client會自動幫我們處理cookies。類似request.session(),所以如果我們登陸的時候,只需要在on_start中登陸一次就可以了

2、多統(tǒng)計api的問題

如果在locust中,如果url是不需要統(tǒng)計,則我們不要用clent去訪問api,應(yīng)該用request去訪問,這樣就locust就不會統(tǒng)計request庫發(fā)起的請請求

九、分布式調(diào)用的問題

一旦單臺機器不夠模擬足夠多的用戶時,Locust支持運行在多臺機器中進行壓力測試。
 
為了實現(xiàn)這個,你應(yīng)該在 master 模式中使用--master標記來啟用一個 Locust 實例。這個實例將會運行你啟動測試的 Locust 交互網(wǎng)站并查看實時統(tǒng)計數(shù)據(jù)。<br>master 節(jié)點的機器自身不會模擬任何用戶。相反,你必須使用 --slave 標記啟動一臺到多臺 Locustslave 機器節(jié)點,與標記 --master-host 一起使用(指出master機器的IP/hostname)。
 
常用的做法是在一臺獨立的機器中運行master,在slave機器中每個處理器內(nèi)核運行一個slave實例。
 
注意:master 和每一臺 slave 機器,在運行分布式測試時都必須要有 locust 的測試文件。
在 master 模式下啟動 Locust:
 
locust -f my_loucstfile.py --master
 
在每個 slave 中執(zhí)行(192.168.0.14 替換為你 msater 的IP):
 
locust -f my_locustfile.py --slave --master-host=192.168.0.14

以上就是Python locust工具使用詳解的詳細內(nèi)容,更多關(guān)于Python locust工具的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python 數(shù)字轉(zhuǎn)化成列表詳情

    Python 數(shù)字轉(zhuǎn)化成列表詳情

    這篇文章主要介紹了Python 數(shù)字轉(zhuǎn)化成列表,主要以代碼實現(xiàn)了將輸入的數(shù)字轉(zhuǎn)化成一個列表,輸入數(shù)字中的每一位按照從左到右的順序成為列表中的一項。,需要的朋友可以參考下
    2021-11-11
  • GDAL 矢量屬性數(shù)據(jù)修改方式(python)

    GDAL 矢量屬性數(shù)據(jù)修改方式(python)

    這篇文章主要介紹了GDAL 矢量屬性數(shù)據(jù)修改方式(python),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • 詳解Python 數(shù)據(jù)庫的Connection、Cursor兩大對象

    詳解Python 數(shù)據(jù)庫的Connection、Cursor兩大對象

    這篇文章主要介紹了Python 數(shù)據(jù)庫的Connection、Cursor兩大對象,文中通過python 數(shù)據(jù)庫圖解給大家介紹的非常詳細,需要的朋友參考下吧
    2018-06-06
  • Python 操作mysql數(shù)據(jù)庫查詢之fetchone(), fetchmany(), fetchall()用法示例

    Python 操作mysql數(shù)據(jù)庫查詢之fetchone(), fetchmany(), fetchall()用法示例

    這篇文章主要介紹了Python 操作mysql數(shù)據(jù)庫查詢之fetchone(), fetchmany(), fetchall()用法,結(jié)合實例形式分析了Python使用pymysql模塊的fetchone(), fetchmany(), fetchall()方法進行mysql數(shù)據(jù)庫查詢的操作技巧,需要的朋友可以參考下
    2019-10-10
  • python numpy中multiply與*及matul 的區(qū)別說明

    python numpy中multiply與*及matul 的區(qū)別說明

    這篇文章主要介紹了python numpy中multiply與*及matul 的區(qū)別說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • 使用Pandas的ExcelWriter操作excel的方法

    使用Pandas的ExcelWriter操作excel的方法

    這篇文章主要介紹了使用Pandas的ExcelWriter操作excel的方法,ExcelWriter這個插件有個坑,就是已經(jīng)設(shè)置好的格式是無法更改的,因此,由pandas轉(zhuǎn)成excel的時候,必須將格式清除,尤其是表頭的格式需要大家多多注意,本文結(jié)合示例代碼講解的非常詳細,需要的朋友參考下吧
    2023-11-11
  • Python線程之認識線程安全?

    Python線程之認識線程安全?

    這篇文章主要介紹了Python線程之認識線程安全,線程安全,名字就非常直接,在多線程情況下是安全的,多線程操作上的安全,下面學習線程安全的文章詳細內(nèi)容,需要的小伙伴可以參考一下
    2022-02-02
  • Python 深入了解opencv圖像分割算法

    Python 深入了解opencv圖像分割算法

    本文主要介紹了Python通過opencv實現(xiàn)圖像分割的詳細過程與代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-11-11
  • Python對list列表進行去重的幾種方法

    Python對list列表進行去重的幾種方法

    python?列表就是我們js中的數(shù)組了,我們下文整理幾個常用的python?列表去重實現(xiàn)方法,非常的簡單好用,通過代碼示例講解的非常詳細,具有一定的參考價值,需要的朋友可以參考下
    2024-10-10
  • Pycharm最全報錯的原因與解決方法總結(jié)(推薦!)

    Pycharm最全報錯的原因與解決方法總結(jié)(推薦!)

    這篇文章主要給大家介紹了關(guān)于Pycharm最全報錯的原因與解決方法的相關(guān)資料,文中記錄了Python各種報錯解釋及處理方法,屬于個人記錄型,需要的朋友可以參考下
    2022-07-07

最新評論

中方县| 黑龙江省| 高州市| 雷山县| 济源市| 辽源市| 钦州市| 梨树县| 酒泉市| 东辽县| 侯马市| 吉水县| 濉溪县| 龙胜| 大同县| 石嘴山市| 武强县| 广南县| 图木舒克市| 定远县| 晋州市| 石嘴山市| 苍梧县| 贵南县| 巴彦淖尔市| 通城县| 简阳市| 新平| 富阳市| 屏东市| 英德市| 桃源县| 九龙县| 尼勒克县| 古田县| 黑水县| 蚌埠市| 鹤山市| 郓城县| 桂阳县| 芦溪县|