之前业务用的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 测试结果2
FastAPI 异步测试结果(方法前加 async)。本人初学者,如果用错,望提醒!
Flask 第一次测试总耗时 6.38s,第二次总耗时6.79s
Flask 测试结果1
Flask 测试结果2