欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python flask與fastapi性能測試方法介紹

 更新時間:2022年12月09日 15:18:51   作者:我愛看明朝  
這篇文章主要介紹了Python flask與fastapi性能測試方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧

背景

sy項目通過MQ接受業(yè)務(wù)系統(tǒng)的業(yè)務(wù)數(shù)據(jù),通過運行開發(fā)者開發(fā)的python腳本執(zhí)行業(yè)務(wù)系統(tǒng)與財務(wù)系統(tǒng)數(shù)據(jù)的一致性校驗。

sy系統(tǒng)需要每天運行大量的python腳本。目前使用falsk日運行6W+次python腳本,由于性能存在瓶頸,需要引入

新的fastapi框架,來解決cpu、內(nèi)存性能壓榨不夠及目前的性能瓶頸。本文目標(biāo)給出兩者的性能測試報告。

給出選擇哪個框架的性能數(shù)據(jù)支撐。

apache ab介紹

apache ab性能測試

安裝

    yum -y install httpd-tools

部分參數(shù)說明

-n  執(zhí)行的請求總數(shù)

-c 并發(fā)數(shù), 同時執(zhí)行的數(shù)量, c不能大于n
-p post請求指定的文件
-T header Content-type值,默認(rèn)為 'text/plain'

測試get請求

ab -c 10  http://127.0.0.1:8081/cppla

測試post請求

ab -n 100 -c 10 -T 'application/json' -p httpjson.txt  http://127.0.0.1:8081/cppla1  

// httpjson.txt的內(nèi)容
{"recordId": 123}

測試計劃

模擬真實每次請求調(diào)用腳本,分別對每一個數(shù)量級的請求量進(jìn)行測試。

請求總數(shù)每次并發(fā)數(shù)每次并發(fā)數(shù)每次并發(fā)數(shù)
100101001000
1000101001000
10000101001000
20000101001000
30000101001000
40000101001000
50000101001000
60000101001000
80000101001000

測試代碼

處理post請求,延時3s返回結(jié)果。flask啟動20個進(jìn)程。fastapi啟動一個進(jìn)程。

## flask 代碼
# coding: utf-8
from gevent import monkey
from gevent.pywsgi import WSGIServer
import requests
import datetime
import os
from multiprocessing import cpu_count, Process
from flask import Flask, jsonify,request
import json
import traceback
import importlib
from loguru import logger
import time
app = Flask(__name__)
# 執(zhí)行run方法
@app.route("/cppla1", methods=['POST', 'GET'])
def cppla1():
    data = request.json
    time.sleep(3)
    return data
# 啟動監(jiān)聽ip、端口
def run(MULTI_PROCESS):
    if MULTI_PROCESS == False:
        WSGIServer(('0.0.0.0', 8081), app).serve_forever()
    else:
        mulserver = WSGIServer(('0.0.0.0', 8081), app)
        mulserver.start()
        def server_forever():
            mulserver.start_accepting()
            mulserver._stop_event.wait()
       # for i in range(cpu_count()):
        for i in range(20):
            logger.info('啟動進(jìn)程第幾個:{}', i)
            p = Process(target=server_forever)
            p.start()
if __name__ == "__main__":
    # 單進(jìn)程 + 協(xié)程
    # run(False)
    # 多進(jìn)程 + 協(xié)程
    log_init()
    run(True)
## fastapi
# coding: utf-8
# import web framework
from fastapi import FastAPI
from fastapi.encoders import jsonable_encoder
from fastapi.responses import JSONResponse
# import base lib
import datetime
import os
import requests
import json
import traceback
import importlib
from loguru import logger
import time
app = FastAPI()
@app.post("/cppla1")
def function_benchmark(data:dict):
    time.sleep(3)
    return {"item": data}
# 啟動監(jiān)聽ip、端口
if __name__ == "__main__":
    import uvicorn
    uvicorn.run(app, host="0.0.0.0", port=8081)

測試結(jié)果

框架類型請求總數(shù)每次并發(fā)數(shù)耗時(s)每次并發(fā)數(shù)耗時(s)每次并發(fā)數(shù)耗時(s)
fastapi1001033.11910012.1481000ab命令不支持
flask1001045.08810081.1061000ab命令不支持
fastapi100010304.05710078.283100078.631
flask100010327.472100198.2731000303.442
fastapi1000010x100754.2961000757.719
flask1000010x1001550.11910001970.427
fastapi2000010x100x1000x
flask2000010x100x1000x
fastapi3000010x100x1000x
flask3000010x100x1000x
fastapi4000010x100x1000x
flask4000010x100x1000x
fastapi5000010x100x1000x
flask5000010x100x1000x
fastapi6000010x100x1000x
flask6000010x100x1000x
fastapi8000010x100x1000x
flask8000010x100x1000x

結(jié)論

fastapi是flask性能的3倍,推薦使用fastap。

到此這篇關(guān)于Python flask與fastapi性能測試方法介紹的文章就介紹到這了,更多相關(guān)flask與fastapi性能測試內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python線程指南分享

    Python線程指南分享

    今天小編就為大家?guī)鞵ython線程指南分享,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • pytorch無法使用GPU問題的解決方法

    pytorch無法使用GPU問題的解決方法

    這篇文章主要介紹了如何解決pytorch 無法使用GPU 的問題,文中通過代碼和圖文給大家講解的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-02-02
  • Python Django框架模板渲染功能示例

    Python Django框架模板渲染功能示例

    這篇文章主要介紹了Python Django框架模板渲染功能,結(jié)合實例形式分析了Django框架模板渲染相關(guān)的配置、視圖調(diào)用、變量賦值等相關(guān)操作技巧,需要的朋友可以參考下
    2019-11-11
  • 在Python中操作字典之setdefault()方法的使用

    在Python中操作字典之setdefault()方法的使用

    這篇文章主要介紹了在Python中操作字典之setdefault()方法的使用,是Python入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-05-05
  • 使用Playwright進(jìn)行視覺回歸測試詳解

    使用Playwright進(jìn)行視覺回歸測試詳解

    這篇文章主要介紹了使用Playwright進(jìn)行視覺回歸測試詳解,視覺回歸測試是一種軟件測試技術(shù),專注于檢測Web應(yīng)用程序或網(wǎng)站的用戶界面中的視覺變化和差異,需要的朋友可以參考下
    2023-08-08
  • Python驗證文件是否可讀寫代碼分享

    Python驗證文件是否可讀寫代碼分享

    這篇文章主要介紹了Python驗證文件是否可讀寫代碼分享,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12
  • Python+OpenCV圖像處理之直方圖統(tǒng)計

    Python+OpenCV圖像處理之直方圖統(tǒng)計

    直方圖就是對圖像的另外一種解釋,它描述了整幅圖像的灰度分布。通過直方圖我們可以對圖像的亮度、灰度分布、對比度等有了一個直觀的認(rèn)識。本文將為大家詳細(xì)介紹一下如何通過OpenCV實現(xiàn)直方圖統(tǒng)計,感興趣的可以了解一下
    2021-12-12
  • Django如何使用asyncio協(xié)程和ThreadPoolExecutor多線程

    Django如何使用asyncio協(xié)程和ThreadPoolExecutor多線程

    這篇文章主要介紹了Django如何使用asyncio協(xié)程和ThreadPoolExecutor多線程,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-10-10
  • 利用Python字符畫生成甜心教主

    利用Python字符畫生成甜心教主

    字符畫是一系列字符的組合,我們可以把字符看作是比較大塊的像素,一個字符能表現(xiàn)一種顏色,字符的種類越多,可以表現(xiàn)的顏色也越多,圖片也會更有層次感。?本文將利用Python字符畫繪制一個甜心教主王心凌,需要的可以參考一下
    2022-05-05
  • 解決pycharm下pyuic工具使用的問題

    解決pycharm下pyuic工具使用的問題

    這篇文章主要介紹了解決pycharm下pyuic工具使用的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04

最新評論