被吹爆的性能强者FastAPI,实际性能不到Flask一半

之前业务用的Flask,最近为了提高并发速度想试试别的框架。看到网络一水的捧FastAPI。什么支持异步,吊打Flask,就试着想用FastAPI和Flask对比一下。

写了两个接口,同样的GET方法,同样的业务逻辑(从网络上获取图片,并用Pytorch识别)

FastAPI代码:

import uvicorn
import time
from fastapi import FastAPI
from entrance.plate import *

app = FastAPI()

@app.get("/fastapi_query")
#async def fastapi_query():
def fastapi_query():

    start = time.time()
    data = {"ret": -1,"msg":"400","data": {}}

    data = go_query()

    end = time.time()

    data['time'] = end - start

    return data

if __name__ == '__main__':
    uvicorn.run('app:app',host = '0.0.0.0',port = 8097,reload = True, debug = True)

Flask代码:

import flask

from entrance.plate import *

app = flask.Flask(__name__)

@app.route('/flask_query', methods=['GET'])
def flask_query():
    start = time.time()
    data = {"ret": -1,"msg":"400","data": {}}

    data = go_query()

    end = time.time()

    data['time'] = end - start

    return flask.jsonify(data)

下面是各模块版本:

Python

3.8.5

Flask

2.0.2

fastapi

0.70.0

gunicorn

20.1.0

uvicorn

0.15.0

机器配置为 2核2G的Centos镜像

最开始都以gunicorn 启动,同样的测试参数:

ab -c 100 -n 100 http://127.0.0.0:8097/fastapi_query

ab -c 100 -n 100 http://127.0.0.0:5000/flask_query

以下是测试结果:

FastAPI 第一次测试总耗时 29s,第二次总耗时18.7s

FastAPI 测试结果1

被吹爆的性能强者FastAPI,实际性能不到Flask一半_第1张图片

FastAPI 测试结果2

被吹爆的性能强者FastAPI,实际性能不到Flask一半_第2张图片

FastAPI 异步测试结果(方法前加 async)。本人初学者,如果用错,望提醒!

被吹爆的性能强者FastAPI,实际性能不到Flask一半_第3张图片

 

Flask 第一次测试总耗时 6.38s,第二次总耗时6.79s

Flask 测试结果1

被吹爆的性能强者FastAPI,实际性能不到Flask一半_第4张图片

Flask 测试结果2

被吹爆的性能强者FastAPI,实际性能不到Flask一半_第5张图片

你可能感兴趣的:(Python,flask,python,后端)