首页 体育 教育 财经 社会 娱乐 军事 国内 科技 互联网 房产 国际 女人 汽车 游戏

5个顶级异步Python框架

2020-01-06

Python在3.4引入了 asyncio 库,3.6新增了关键字 async 和 await ,尔后,异步结构迅速发展了起来,功能上能和Node.js比肩,除非是CPU密集型使命,不然没有理由不适用异步结构。

假如你是Web开发者,现在异步Web结构上有了更多挑选!

Tornado 底子不是什么新结构,它开端是由FriendFeed在2009年发布。从一开端就供给有异步编程的功用。

Tornado 不只仅是Web结构,一起它内置了许多异步模块,可用于自己构建异步运用。这些模块包含:

经过这些模块,Tornado 构建了自己的异步Web结构模块。

import tornado.ioloop
import tornado.web
class MainHandler:
 def get:
 self.write
def make_app:
 return tornado.web.Application,
if __name__ == __main__ :
 app = make_app
 app.listen
 tornado.ioloop.IOLoop.current.start

Tornado在Python社区中具有许多追随者,并且经验丰厚的架构师运用它们来构建功用强大的体系。这个结构长期以来一直在处理并发问题,可是因为它不支撑WSGI规范,因而没有成为干流。

国内听说知乎是根据Torando构建的。

Sanic是一个诞生有3年的结构:它只支撑3.6以上Python版别,支撑通用的async / await语法,开箱即用,因而你无需阅览许多文档就能够写出你的一个HTTP 处理器。

除了 async 关键字之外,语法上和 flask 根据没不同。

from sanic import Sanic
from sanic.response import json
app = Sanic
@app.route
async def test:
 return json
if __name__ == __main__ :
 app.run

Sanic能够说是Python国际中最盛行和最受欢迎的异步结构。它具有你项目中需求的一切功用:路由,中间件,Cookie,版别操控,蓝图,根据类的视图,静态文件,流,sockets,此外你还能够集成模板,数据库驱动,文件I / O,行列等等。

Vibora和Sanic十分像,致力于成为最快的Python Web服务器。他们网站主页有一个结构比较图:

Vibora宣称比其它结构快几倍,比竞争对手Sanic还快两倍多。当然,这个基准测验要持怀疑态度。

虽然在语法和功用上,Vibora能够与Sanic比美但我以为Sanic愈加老练,因为它现已存在了很长一段时间并且具有更大的社区。

from vibora import Vibora, JsonResponse
app = Vibora
@app.route
async def home:
 return JsonResponse
if __name__ == '__main__':
 app.run

假如您喜爱Flask,但又要支撑异步, 那么Quart你一定会喜爱

Quart契合ASGI规范,该规范是WSGI规范的后继产品,并供给异步支撑。Quart不只与Flask类似,并且与Flask API兼容!该结构的作者期望保留了Flask的风格,仅仅向其间增加异步、WebSocket和HTTP 2支撑。因而,你能够从Flask文档中学习Quart的用法,只需求记住Quart中的函数是异步的就行。

from quart import Quart
app = Quart
@app.route
async def hello:
 return 'hello'
app.run

简直完全像Flask

因为Quart是从Flask中演进过来的,因而Flask的一切功用均可用:路由,中间件,会话,模板,蓝图等。实际上,你乃至能够直接在Quart内部运用Flask的扩展插件。不过,有一个问题是它仅支撑Python 3.7+。

FastAPI似乎是异步 Python 结构里功用、文档最丰厚的结构。

该结构的作者深入研究了其他几个结构,从比如Django到Sanic之类的现代结构,以及NestJS。

语法乃至能够说它比咱们遇到的其他结构更风趣:

rom fastapi import FastAPI
app = FastAPI
@app.get
async def read_user_me:
 return { user_id : the current user }
@app.get
async def read_user:
 return { user_id : user_id}

FastAPI胜过其他结构的杀手锏列表:

那功能呢?FastAPI是根据Starlette库构建的,其功能可与Node相匹配,在某些情况下乃至能够与Go相匹配。总而言之,我真的有一种感觉,FastAPI将成为Python的尖端异步结构。

现在,Python异步生态正在发作许多工作。呈现了新的结构,旧的结构正在重写,许多库开端支撑异步行为。关于Web结构,Python已准备就绪,可供给超卓的功能。假如很长一段时间你在考虑迁移到Node或许go,那现在不需求了。

原文参阅衔接:https://geekflare.com/python-asynchronous-web-frameworks/

有问题能够扫描二维码和我沟通

重视大众号「Python之禅」,回复「1024」免费获取Python资源

热门文章

随机推荐

推荐文章