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

python實(shí)現(xiàn)接口并發(fā)測(cè)試腳本

 更新時(shí)間:2019年06月25日 10:33:24   作者:幸福丶如此  
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)接口并發(fā)測(cè)試腳本,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

常用的網(wǎng)站性能測(cè)試指標(biāo)有:并發(fā)數(shù)、響應(yīng)時(shí)間、吞吐量、性能計(jì)數(shù)器等。

1、并發(fā)數(shù)

并發(fā)數(shù)是指系統(tǒng)同時(shí)能處理的請(qǐng)求數(shù)量,這個(gè)也是反應(yīng)了系統(tǒng)的負(fù)載能力。

2、響應(yīng)時(shí)間

響應(yīng)時(shí)間是一個(gè)系統(tǒng)最重要的指標(biāo)之一,它的數(shù)值大小直接反應(yīng)了系統(tǒng)的快慢。響應(yīng)時(shí)間是指執(zhí)行一個(gè)請(qǐng)求從開始到最后收到響應(yīng)數(shù)據(jù)所花費(fèi)的總體時(shí)間。

3、吞吐量

吞吐量是指單位時(shí)間內(nèi)系統(tǒng)能處理的請(qǐng)求數(shù)量,體現(xiàn)系統(tǒng)處理請(qǐng)求的能力,這是目前最常用的性能測(cè)試指標(biāo)。
QPS(每秒查詢數(shù))、TPS(每秒事務(wù)數(shù))是吞吐量的常用量化指標(biāo),另外還有HPS(每秒HTTP請(qǐng)求數(shù))。
跟吞吐量有關(guān)的幾個(gè)重要是:并發(fā)數(shù)、響應(yīng)時(shí)間。
QPS(TPS),并發(fā)數(shù)、響應(yīng)時(shí)間它們?nèi)咧g的關(guān)系是:
QPS(TPS)= 并發(fā)數(shù)/平均響應(yīng)時(shí)間

4、性能計(jì)數(shù)器

性能計(jì)數(shù)器是描述服務(wù)器或操作系統(tǒng)性能的一些數(shù)據(jù)指標(biāo),如使用內(nèi)存數(shù)、進(jìn)程時(shí)間,在性能測(cè)試中發(fā)揮著"監(jiān)控和分析"的作用,尤其是在分析統(tǒng)統(tǒng)可擴(kuò)展性、進(jìn)行新能瓶頸定位時(shí)有著非常關(guān)鍵的作用。
Linux中可以使用top或者uptime命令看到當(dāng)前系統(tǒng)的負(fù)載及資源利用率情況。
資源利用率:指系統(tǒng)各種資源的使用情況,如cpu占用率為68%,內(nèi)存占用率為55%,一般使用"資源實(shí)際使用/總的資源可用量"形成資源利用率。

壓測(cè)腳本(下單的接口):

#!/usr/bin/env python
#-*- coding:utf-8 -*-

import requests,time,json,threading,random

class Presstest(object):
  headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36',
    'Content-Type': 'application/json; charset=UTF-8',
  }
  def __init__(self,login_url,press_url,phone="1376193000",password="123456"):
    self.login_url = login_url
    self.press_url = press_url
    self.phone = phone
    self.password = password
    self.session = requests.Session()
    self.session.headers = self.headers

  def login(self):
    '''登陸獲取session'''
    data = data = {'t': int(time.time() * 1000), 'userName': self.phone, 'passWord': self.password}
    res = self.session.post(self.login_url,data=json.dumps(data))
    XToken = res.json().get('data').get('companyToken')
    self.session.headers['X-Token'] = XToken

  def testinterface(self):
    '''壓測(cè)接口'''
    self.session.headers['X-UnionId'] = 'of6uw1CUVhP533sQok'
    data = {"id": int(''.join(str(random.choice(range(10))) for _ in range(10))),
        "openId": "oMr0c5LGJjlTc", "addressId": 10, "shipType": "SELF", "totalAmount": 5,
        "receivable": 5, "carts": [
        {"amount": 1, "barcode": "1234567890", "skuId": 1, "spec": "34", "itemAmount": 5, "price": 0,
         "cover": "xxxx-dd.oss-cn-shanghai.aliyuncs.com/dfc91fd067ac464c096c90af33a196a5.png",
         "name": "沙宣洗發(fā)水", "packingType": "瓶", "placeOfOrigin": "上海", "productId": "310153323435134976",
         "retailPrice": 5, "suitableAge": "1-100"}], "formId": "the formId is a mock one", "comments": "aa"}
    global ERROR_NUM
    try:
      html = self.session.post(self.press_url, data=json.dumps(data))
      if html.json().get('code') != 0:
        print(html.json())
        ERROR_NUM += 1
    except Exception as e:
      print(e)
      ERROR_NUM += 1

  def testonework(self):
    '''一次并發(fā)處理單個(gè)任務(wù)'''
    i = 0
    while i < ONE_WORKER_NUM:
      i += 1
      self.work()
    time.sleep(LOOP_SLEEP)

  def run(self):
    '''使用多線程進(jìn)程并發(fā)測(cè)試'''
    t1 = time.time()
    Threads = []

    for i in range(THREAD_NUM):
      t = threading.Thread(target=self.testonework, name="T" + str(i))
      t.setDaemon(True)
      Threads.append(t)

    for t in Threads:
      t.start()
    for t in Threads:
      t.join()
    t2 = time.time()

    print("===============壓測(cè)結(jié)果===================")
    print("URL:", self.press_url)
    print("任務(wù)數(shù)量:", THREAD_NUM, "*", ONE_WORKER_NUM, "=", THREAD_NUM * ONE_WORKER_NUM)
    print("總耗時(shí)(秒):", t2 - t1)
    print("每次請(qǐng)求耗時(shí)(秒):", (t2 - t1) / (THREAD_NUM * ONE_WORKER_NUM))
    print("每秒承載請(qǐng)求數(shù):", 1 / ((t2 - t1) / (THREAD_NUM * ONE_WORKER_NUM)))
    print("錯(cuò)誤數(shù)量:", ERROR_NUM)


if __name__ == '__main__':
  login_url = 'https://ds.xxxxx.com/sys/sysUser/login'
  press_url = 'https://ds.xxxxx.com/weshop/order/checkout'
  phone = "1376193000"
  password = "123456"
  
  THREAD_NUM = 1     # 并發(fā)線程總數(shù)
  ONE_WORKER_NUM = 5   # 每個(gè)線程的循環(huán)次數(shù)
  LOOP_SLEEP = 0.1    # 每次請(qǐng)求時(shí)間間隔(秒)
  ERROR_NUM = 0      # 出錯(cuò)數(shù)
  
  obj = Presstest(login_url=login_url,press_url=press_url,phone=phone,password=password)
  obj.login()
  obj.run()

輸出結(jié)果:

===============壓測(cè)結(jié)果===================
URL: https://ds.xxxxx.com/weshop/order/checkout
任務(wù)數(shù)量: 1 * 5 = 5
總耗時(shí)(秒): 1.9810078144073486
每次請(qǐng)求耗時(shí)(秒): 0.39620156288146974
每秒承載請(qǐng)求數(shù): 2.5239678327547805
錯(cuò)誤數(shù)量: 0

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • python改變?nèi)罩?logging)存放位置的示例

    python改變?nèi)罩?logging)存放位置的示例

    示例主要解決的問題是通過傳入日志文件參數(shù)的方式來改變?nèi)罩镜拇娣盼恢?需要的朋友可以參考下
    2014-03-03
  • python支持同時(shí)存在多個(gè)版本的操作步驟

    python支持同時(shí)存在多個(gè)版本的操作步驟

    這篇文章主要介紹了python支持同時(shí)存在多個(gè)版本的操作步驟,在已有Python 3.8的情況下,安裝新的Python 3.9版本,感興趣的小伙伴可以參考文中步驟,文章中介紹的非常詳細(xì),需要的朋友可以參考下
    2024-03-03
  • python爬蟲 批量下載zabbix文檔代碼實(shí)例

    python爬蟲 批量下載zabbix文檔代碼實(shí)例

    這篇文章主要介紹了python爬蟲 批量下載zabbix文檔代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • Python進(jìn)階篇之字典操作總結(jié)

    Python進(jìn)階篇之字典操作總結(jié)

    字典是Python語言中唯一的映射類型。字典對(duì)象是可變的,它是一個(gè)容器類型,能存儲(chǔ)任意個(gè)數(shù)的Python對(duì)象,其中也可包括其他容器類型。在學(xué)習(xí)了 Python 基本的字典操作后,通過學(xué)習(xí)本文的這些進(jìn)階操作,讓寫出的代碼更加優(yōu)雅簡(jiǎn)潔和pythonic。下面來一起看看吧。
    2016-11-11
  • Python趣味實(shí)戰(zhàn)之手把手教你實(shí)現(xiàn)舉牌小人生成器

    Python趣味實(shí)戰(zhàn)之手把手教你實(shí)現(xiàn)舉牌小人生成器

    前幾天寫了一個(gè)嬰兒級(jí)別的爬蟲圖文教程,大家很喜歡.恰好周末看到有人咨詢這個(gè) “舉牌小人” 怎么做?基于此,我想借此為大家再寫一篇 “爬蟲應(yīng)用” 的文章,教你制作一個(gè)好玩兒的 “舉牌小人” ,需要的朋友可以參考下
    2021-06-06
  • Django 中的Timezone 處理操作

    Django 中的Timezone 處理操作

    這篇文章主要介紹了Django 中的Timezone 處理操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • python2.7讀取文件夾下所有文件名稱及內(nèi)容的方法

    python2.7讀取文件夾下所有文件名稱及內(nèi)容的方法

    python,本身來說是一門高級(jí)編程語言,python它入門簡(jiǎn)單,有基礎(chǔ)的學(xué)起來很快就能有簡(jiǎn)單的應(yīng)用,但是在非常高的抽象計(jì)算中,高級(jí)的python程序設(shè)計(jì)也是非常難學(xué)的。接下來給大家介紹python2.7讀取文件夾下所有文件名稱及內(nèi)容的方法,一起看看吧
    2018-02-02
  • Python Pillow Image Invert

    Python Pillow Image Invert

    今天小編就為大家分享一篇關(guān)于Python Pillow Image Invert,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • selenium+python配置chrome瀏覽器的選項(xiàng)的實(shí)現(xiàn)

    selenium+python配置chrome瀏覽器的選項(xiàng)的實(shí)現(xiàn)

    這篇文章主要介紹了selenium+python配置chrome瀏覽器的選項(xiàng)的實(shí)現(xiàn)。文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • python使用tkinter模塊實(shí)現(xiàn)文件選擇功能

    python使用tkinter模塊實(shí)現(xiàn)文件選擇功能

    這篇文章主要介紹了python使用tkinter模塊實(shí)現(xiàn)文件選擇功能,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-06-06

最新評(píng)論

罗田县| 贵溪市| 蕉岭县| 呼图壁县| 和顺县| 桐城市| 青神县| 万全县| 湘潭市| 周至县| 永和县| 平邑县| 方城县| 宁南县| 黎平县| 玛沁县| 池州市| 丰城市| 宝丰县| 白沙| 金坛市| 永嘉县| 东乡县| 河池市| 山东省| 灌云县| 论坛| 白银市| 渝中区| 竹山县| 云林县| 重庆市| 阿拉善盟| 高清| 会同县| 商河县| 林芝县| 台前县| 奉节县| 商水县| 白沙|