Python的5大异步Web框架
随着 3.5 版本的asyncio库的发布,Python 承认了 Node.js 对 Web 开发的影响,并在语言中引入了两个新关键字——async
和await
. 这是一个非常重要的事情,因为 Python 语言非常谨慎地扩展核心语法,除非有迫切需要,这仅表明 Python 开发人员认为异步功能的重要性。
新旧库开始使用协程功能,异步框架大受欢迎,并且今天仍在编写新框架。本文晓得博客为你介绍Python的5大异步Web框架
Tornado
Tornado根本不是一个新框架。Tornado 从根本上说不是一个 Web 框架。它是异步模块的集合,也用于构建 Web 框架模块。
import tornado.ioloop
import tornado.web
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write("Hello, world")
def make_app():
return tornado.web.Application([
(r"/", MainHandler),
])
if __name__ == "__main__":
app = make_app()
app.listen(8888)
tornado.ioloop.IOLoop.current().start()
Tornado 在 Python 社区拥有强大而坚定的追随者,经验丰富的架构师使用它来构建功能强大的系统,它不支持 WSGI 标准。
Sanic
Sanic是一个真正意义上的“现代”框架:它不支持低于 3.6 的 Python 版本,支持开箱即用的简单通用的 async/await 语法。
它类似于您使用任何其他微框架(例如 Flask、CherryPy)编写的代码,只添加了一些代码async
:
from sanic import Sanic
from sanic.response import json
app = Sanic()
@app.route("/")
async def test(request):
return json({"hello": "world"})
if __name__ == "__main__":
app.run(host="0.0.0.0", port=8000)
Sanic 可以说是 Python 世界中最受欢迎和最受欢迎的异步框架。它具有您项目所需的几乎所有功能——路由、中间件、cookie、版本控制、蓝图、基于类的视图、静态文件、流、套接字等——以及它不提供开箱即用的功能— 模板、数据库支持、文件 I/O、队列。
Vibora
Vibora致力于成为目前最快的 Python Web 服务器。尽管在语法和功能上,Vibora 可以与 Sanic 相媲美(或者甚至可能稍微好一点),但我认为 Sanic 更成熟,因为它存在的时间更长并且有一个更大的社区。
from vibora import Vibora, JsonResponse
app = Vibora()
@app.route('/')
async def home():
return JsonResponse({'hello': 'world'})
if __name__ == '__main__':
app.run(host="0.0.0.0", port=8000)
Quart
如果您喜欢在 Flask 中进行开发,但对缺乏异步支持感到遗憾,那么您会非常喜欢Quart。
Quart 符合ASGI标准,该标准是著名的 WSGI 标准的继承者,并提供异步支持。Quart 的有趣之处在于它不仅与 Flask 相似,而且实际上与 Flask API 兼容!可以直接从 Flask 文档中学习 Quart。
from quart import Quart
app = Quart(__name__)
@app.route('/')
async def hello():
return 'hello'
app.run()
由于 Quart 是 Flask 的演变,因此 Flask 内部的所有功能都可用:路由、中间件、会话、模板、蓝图等。事实上,你甚至可以直接在 Quart 中使用 Flask 扩展。
推荐:Pycharm教程
FastAPI
FastAPI是我在研究异步 Python 框架时遇到的功能最丰富、文档最丰富的框架。框架作者深入研究了其他几个框架,从像 Django 这样的当代框架到像 Sanic 这样的现代框架,以及跨技术研究 NestJS。
语法非常令人愉快;甚至可以说它比我们遇到的其他框架更有趣:
rom fastapi import FastAPI
app = FastAPI()
@app.get("/users/me")
async def read_user_me():
return {"user_id": "the current user"}
@app.get("/users/{user_id}")
async def read_user(user_id: str):
return {"user_id": user_id}
现在,让 FastAPI 胜过其他框架的杀手级特性列表如下:
- 自动 API 文档生成:可以使用符合标准的 UI 来使用 API。支持 SwaggerUI、ReDoc 等。
- 现代开发:不仅执行良好的编码原则,而且从长远来看防止错误和混乱。
- 广泛的文档:FastAPI 毫无疑问地胜出,它有一页又一页的文档解释了几乎每一个小细节!
- 超越基础: FastAPI 支持 WebSockets、Streaming 和 GraphQL,此外还有 CORS、会话、cookie 等所有传统助手。
结论
以上是晓得博客为你介绍的Python的5大异步Web框架的全部内容,请务必牢记,一些 Python 异步框架处于早期阶段,并且正在迅速发展,使用需谨慎!