架构:Flask vs FastAPI

7 浏览
0 Comments

架构:Flask vs FastAPI

我一直在尝试使用Flask和FastAPI来了解它们作为服务器的表现。

其中一个我想了解的主要问题是Flask和FastAPI如何处理来自多个客户端的多个请求。

特别是在代码效率存在问题(长时间数据库查询)的情况下。

所以,我尝试编写了一个简单的代码来理解这个问题。

代码很简单,当客户端访问路由时,应用程序会在返回结果之前休眠10秒钟。

代码大致如下:

FastAPI

import uvicorn
from fastapi import FastAPI
from time import sleep
app = FastAPI()
@app.get('/')
async def root():
    print('休眠10秒')
    sleep(10)
    print('唤醒')
    return {'message': '你好'}
if __name__ == "__main__":
    uvicorn.run(app, host="127.0.0.1", port=8000)

Flask

from flask import Flask
from flask_restful import Resource, Api
from time import sleep
app = Flask(__name__)
api = Api(app)
class Root(Resource):
    def get(self):
        print('休眠10秒')
        sleep(10)
        print('唤醒')
        return {'message': '你好'}
api.add_resource(Root, '/')
if __name__ == "__main__":
    app.run()

启动应用程序后,我尝试通过两个不同的Chrome客户端同时访问它们。

以下是结果:

FastAPI

enter image description here

Flask

enter image description here

正如您所见,对于FastAPI,代码在处理下一个请求之前先等待10秒钟。而对于Flask,代码在10秒的休眠仍在进行时处理下一个请求。

尽管我做了一些搜索,但对于这个问题实际上没有一个直接的答案。

如果有人对此有任何可以阐明一些问题的评论,请在评论中留言。

非常感谢大家的意见。非常感谢大家花时间。

0