小編給大家分享一下Python locust工具怎么用,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

Python是一種跨平臺的、具有解釋性、編譯性、互動(dòng)性和面向?qū)ο蟮哪_本語言,其最初的設(shè)計(jì)是用于編寫自動(dòng)化腳本,隨著版本的不斷更新和新功能的添加,常用于用于開發(fā)獨(dú)立的項(xiàng)目和大型項(xiàng)目。
locust是python語言開發(fā)的一款的開源的的性能測試框架,他比jmeter更加的輕量級,主要是通過協(xié)程(gevent)的方式去實(shí)現(xiàn)并發(fā),通過協(xié)程的方式可以大幅提高單機(jī)的并發(fā)能力,同時(shí)避免系統(tǒng)級的資源調(diào)度。locust具有開源性、分布式、支持高并發(fā),支持webUI的操作方式。
locust的圖表功能較弱,只展示了很少的數(shù)據(jù)
locust不支持監(jiān)控服務(wù)端的狀態(tài),需要借助第三方工具,或者自己寫代碼去實(shí)現(xiàn)
locust的安裝非常簡單,直接通過pip的方式就可以安裝
pip install locust
通過task可以把某個(gè)函數(shù)指定為任務(wù),直接@task裝飾對應(yīng)的函數(shù)即可,在@tast(n)中可以有一個(gè)參數(shù)n,意思是這個(gè)任務(wù)的占比是多少
需要定義一個(gè)類,繼承TaskSet這個(gè)類,這個(gè)是是一個(gè)任務(wù)集的概念,這個(gè)類中可以包括多個(gè)task
需要定義一個(gè)類,這個(gè)類要繼承HttpUser,通過這個(gè)定義的類我們可以執(zhí)行具體的任務(wù)集
看了上面的介紹,可能大家有點(diǎn)云里霧里的,下面我們由淺入深看代碼
from locust import HttpLocust
from locust import HttpUser
from locust import task
from locust import TaskSet
#指定一個(gè)任務(wù)集
class My_task_set(TaskSet):
#這是某個(gè)任務(wù),30是比例,比如這里是30/50
@task(30)
def getindex1(self):
# client就是個(gè)requests對象
# catch_response,告訴locust如何判斷請求失敗還是成功
res = self.client.get("/bainianminguo/p/10952586.html")
@task(20)
def getindex2(self):
# client就是個(gè)requests對象
res = self.client.get("/bainianminguo/p/7253930.html")
class WebSite(HttpUser):
# 指定要執(zhí)行哪個(gè)任務(wù)集
tasks = [My_task_set,]
# 請求和請求之間最小的間隔時(shí)間
min_wait = 1000
# 請求和請求之間較大的間隔時(shí)間
max_waif = 2000

Number of total users to simulate 模擬的總的用戶數(shù)
Spawn rate 每秒鐘新增的用戶數(shù)
class My_task_set(TaskSet):
#添加初始化方法
def on_start(self):
print("類似類中的構(gòu)造方法,每個(gè)用戶在任務(wù)開始前,只執(zhí)行一次,在這里可以定義一個(gè)對象的屬性,這樣其它測試集就可以使用這個(gè)屬性")這個(gè)方法類似pytest框架中的前置條件或者說是面向?qū)ο笾械臉?gòu)造方法
def on_stop(self):
print("類似類中的后置方法,每個(gè)用戶在任務(wù)開始后,只執(zhí)行一次,在這里可以定義一個(gè)對象的屬性,這樣其它測試集就可以使用這個(gè)屬性")

from locust import HttpLocust
from locust import HttpUser
from locust import task
from locust import TaskSet
# locust中的client會自動(dòng)幫我們處理cookies。類似request.session(),所以如果我們登陸的時(shí)候,只需要在on_start中登陸一次就可以了
# 如果在locust中,如果url是不需要統(tǒng)計(jì),則我們不要用clent去訪問api,應(yīng)該用request去訪問,這樣就locust就不會統(tǒng)計(jì)request庫發(fā)起的請請求
#指定一個(gè)任務(wù)集
class My_task_set(TaskSet):
#添加初始化方法
def on_start(self):
print("類似類中的構(gòu)造方法,每個(gè)用戶在任務(wù)開始前,只執(zhí)行一次,在這里可以定義一個(gè)對象的屬性,這樣其它測試集就可以使用這個(gè)屬性")
def on_stop(self):
print("類似類中的后置方法,每個(gè)用戶在任務(wù)開始后,只執(zhí)行一次,在這里可以定義一個(gè)對象的屬性,這樣其它測試集就可以使用這個(gè)屬性")
#這是某個(gè)任務(wù),30是比例,比如這里是30/50
@task(30)
def getindex1(self):
# client就是個(gè)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就是個(gè)requests對象
res = self.client.get("/bainianminguo/p/7253930.html")
print(res)
class WebSite(HttpUser):
# 指定要執(zhí)行哪個(gè)任務(wù)集
# task_set = My_task_set
tasks = [My_task_set,]
# 請求和請求之間最小的間隔時(shí)間
min_wait = 1000
# 請求和請求之間較大的間隔時(shí)間
max_waif = 2000
# Number of total users to simulate 模擬的用戶數(shù)
# Spawn rate 每秒鐘產(chǎn)生的用戶數(shù)locust中的client會自動(dòng)幫我們處理cookies。類似request.session(),所以如果我們登陸的時(shí)候,只需要在on_start中登陸一次就可以了
如果在locust中,如果url是不需要統(tǒng)計(jì),則我們不要用clent去訪問api,應(yīng)該用request去訪問,這樣就locust就不會統(tǒng)計(jì)request庫發(fā)起的請請求
一旦單臺機(jī)器不夠模擬足夠多的用戶時(shí),Locust支持運(yùn)行在多臺機(jī)器中進(jìn)行壓力測試。 為了實(shí)現(xiàn)這個(gè),你應(yīng)該在 master 模式中使用--master標(biāo)記來啟用一個(gè) Locust 實(shí)例。這個(gè)實(shí)例將會運(yùn)行你啟動(dòng)測試的 Locust 交互網(wǎng)站并查看實(shí)時(shí)統(tǒng)計(jì)數(shù)據(jù)。<br>master 節(jié)點(diǎn)的機(jī)器自身不會模擬任何用戶。相反,你必須使用 --slave 標(biāo)記啟動(dòng)一臺到多臺 Locustslave 機(jī)器節(jié)點(diǎn),與標(biāo)記 --master-host 一起使用(指出master機(jī)器的IP/hostname)。 常用的做法是在一臺獨(dú)立的機(jī)器中運(yùn)行master,在slave機(jī)器中每個(gè)處理器內(nèi)核運(yùn)行一個(gè)slave實(shí)例。 注意:master 和每一臺 slave 機(jī)器,在運(yùn)行分布式測試時(shí)都必須要有 locust 的測試文件。
在 master 模式下啟動(dòng) Locust: locust -f my_loucstfile.py --master 在每個(gè) slave 中執(zhí)行(192.168.0.14 替換為你 msater 的IP): locust -f my_locustfile.py --slave --master-host=192.168.0.14

看完了這篇文章,相信你對“Python locust工具怎么用”有了一定的了解,如果想了解更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!
文章標(biāo)題:Pythonlocust工具怎么用-創(chuàng)新互聯(lián)
文章出自:http://www.chinadenli.net/article30/dcpcpo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站、品牌網(wǎng)站建設(shè)、定制開發(fā)、動(dòng)態(tài)網(wǎng)站、域名注冊、外貿(mào)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容