flask与fastapi性能测试
创始人
2024-02-18 13:29:30
0

flask与fastapi性能测试

背景

sy项目通过MQ接受业务系统的业务数据,通过运行开发者开发的python脚本执行业务系统与财务系统数据的一致性校验。
sy系统需要每天运行大量的python脚本。目前使用falsk日运行6W+次python脚本,由于性能存在瓶颈,需要引入
新的fastapi框架,来解决cpu、内存性能压榨不够及目前的性能瓶颈。本文目标给出两者的性能测试报告。
给出选择哪个框架的性能数据支撑。

apache ab介绍

apache ab性能测试

安装

    yum -y install httpd-tools

部分参数说明

-n  执行的请求总数-c 并发数, 同时执行的数量, c不能大于n
-p post请求指定的文件
-T header Content-type值,默认为 '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的内容
{"recordId": 123}

测试计划

模拟真实每次请求调用脚本,分别对每一个数量级的请求量进行测试。

请求总数每次并发数每次并发数每次并发数
100101001000
1000101001000
10000101001000
20000101001000
30000101001000
40000101001000
50000101001000
60000101001000
80000101001000

测试代码

处理post请求,延时3s返回结果。flask启动20个进程。fastapi启动一个进程。

## flask 代码
# coding: utf-8
from gevent import monkey
from gevent.pywsgi import WSGIServer
import requestsimport datetime
import os
from multiprocessing import cpu_count, Process
from flask import Flask, jsonify,request
import json
import tracebackimport importlib
from loguru import logger
import timeapp = Flask(__name__)# 执行run方法
@app.route("/cppla1", methods=['POST', 'GET'])
def cppla1():data = request.jsontime.sleep(3)return data
# 启动监听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('启动进程第几个:{}', i)p = Process(target=server_forever)p.start()if __name__ == "__main__":# 单进程 + 协程# run(False)# 多进程 + 协程log_init()run(True)
## fastapi
# coding: utf-8# https://www.javazhiyin.com/80750.html
# 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 timeapp = FastAPI()@app.post("/cppla1")
def function_benchmark(data:dict):time.sleep(3)return {"item": data}# 启动监听ip、端口
if __name__ == "__main__":import uvicornuvicorn.run(app, host="0.0.0.0", port=8081)

测试结果

框架类型请求总数每次并发数耗时(s)每次并发数耗时(s)每次并发数耗时(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

结论

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

相关内容

热门资讯

润禾材料涨2.27%,成交额1... 5月12日,润禾材料盘中上涨2.27%,截至09:35,报39.18元/股,成交1948.55万元,...
众源新材涨2.04%,成交额1... 5月12日,众源新材盘中上涨2.04%,截至09:40,报10.02元/股,成交1926.44万元,...
浔兴股份跌2.54%,成交额1... 5月12日,浔兴股份(维权)盘中下跌2.54%,截至09:41,报9.20元/股,成交1.01亿元,...
突发!金价大跌,A股港股高开!... 每经编辑|毕陆名 刚刚过去的这个周末,大事频发,随着中美贸易谈判出现积极进展、印巴...
捷强装备跌2.15%,成交额7... 5月12日,捷强装备盘中下跌2.15%,截至09:35,报29.58元/股,成交7273.96万元,...
厚普股份涨2.06%,成交额2... 5月12日,厚普股份盘中上涨2.06%,截至09:40,报9.91元/股,成交2302.99万元,换...
东芯股份涨2.01%,成交额5... 5月12日,东芯股份盘中上涨2.01%,截至09:40,报32.52元/股,成交5488.77万元,...
菲利华涨2.01%,成交额72... 5月12日,菲利华盘中上涨2.01%,截至09:42,报48.75元/股,成交7210.29万元,换...
富满微涨2.01%,成交额23... 5月12日,富满微盘中上涨2.01%,截至09:41,报30.41元/股,成交2314.82万元,换...
5月12日人民币对美元中间价报... 中新网5月12日电 据中国外汇交易中心网站消息,中国人民银行授权中国外汇交易中心公布,2025年5月...
梦洁股份跌2.07%,成交额1... 5月12日,梦洁股份(维权)盘中下跌2.07%,截至09:42,报3.79元/股,成交1906.76...
盛泰集团跌2.02%,成交额1... 5月12日,盛泰集团盘中下跌2.02%,截至09:41,报6.30元/股,成交1688.14万元,换...
普利退涨2.67%,成交额24... 5月12日,普利退(维权)盘中上涨2.67%,截至09:42,报0.77元/股,成交246.72万元...
西部超导涨2.00%,成交额8... 5月12日,西部超导盘中上涨2.00%,截至09:41,报50.90元/股,成交8972.82万元,...
锂电池ETF(561160)开... 5月12日,锂电池ETF(561160)开盘涨1.27%,报0.479元。锂电池ETF(561160...
中药50ETF(562390)... 5月12日,中药50ETF(562390)开盘涨0.32%,报0.952元。中药50ETF(5623...
新能源车龙头ETF(15963... 5月12日,新能源车龙头ETF(159637)开盘涨0.66%,报0.611元。新能源车龙头ETF(...
机床ETF(159663)开盘... 5月12日,机床ETF(159663)开盘涨0.90%,报1.122元。机床ETF(159663)重...
碳中和龙头ETF(159640... 5月12日,碳中和龙头ETF(159640)开盘涨0.54%,报0.742元。碳中和龙头ETF(15...
交运ETF(159662)开盘... 5月12日,交运ETF(159662)开盘涨0.20%,报0.991元。交运ETF(159662)重...