Python在3.4引入了 asyncio 库,3.6新增了关键字 async和await,此后,异步框架迅速发展了起来,性能上能和Node.js比肩,除非是CPU密集型任务,否则没有理由不适用异步框架。
如果你是Web开发者,现在异步Web框架上有了更多选择!
1、Tornado
Tornado 根本不是什么新框架,它最初是由FriendFeed(后被Facebook收购)在2009年发布。从一开始就提供有异步编程的功能。
Tornado 不仅仅是Web框架,同时它内置了很多异步模块,可用于自己构建异步应用。这些模块包括:
- 协同程序和其他原语(tornado.gen,tornado.locks,tornado.queues等)
- 网络模块(tornado.ioloop,tornado.iostream等)
- 异步服务器和客户端(tornado.httpserver,tornado.httpclient,等)
通过这些模块,Tornado 构建了自己的异步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标准(大部分Python库仍在同步中),因此尚未成为主流。
国内据说知乎是基于Torando构建的。
2、 Snaic
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(request): return json({"hello": "world"}) if __name__ == "__main__": app.run(host="0.0.0.0", port=8000)
Sanic可以说是Python世界中最流行和最受欢迎的异步框架。它具有你项目中需要的所有功能:路由,中间件,Cookie,版本控制,蓝图,基于类的视图,静态文件,流,sockets,此外你还可以集成模板,数据库驱动,文件I / O,队列等等。
3、Vibora
Vibora和Sanic非常像,致力于成为最快的Python Web服务器。他们网站首页有一个框架比较图:
Vibora声称比其它框架快几倍,比竞争对手Sanic还快两倍多。当然,这个基准测试要持怀疑态度。
尽管在语法和功能上,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)
4、Quart
如果您喜欢Flask,但又要支持异步, 那么Quart你一定会喜欢
Quart符合ASGI标准,该标准是WSGI标准的后继产品,并提供异步支持。Quart不仅与Flask相似,而且与Flask API兼容!该框架的作者希望保留了Flask的风格,只是向其中添加异步、WebSocket和HTTP 2支持。因此,你可以从Flask文档中学习Quart的用法,只需要记住Quart中的函数是异步的就行。
from quart import Quart app = Quart(__name__) @app.route('/') async def hello(): return 'hello' app.run()
几乎完全像Flask
由于Quart是从Flask中演进过来的,因此Flask的所有功能均可用:路由,中间件,会话,模板,蓝图等。实际上,你甚至可以直接在Quart内部使用Flask的扩展插件。不过,有一个问题是它仅支持Python 3.7+。
5、FastAPI
FastAPI似乎是异步 Python 框架里功能、文档最丰富的框架。
该框架的作者深入研究了其他几个框架,从诸如Django到Sanic之类的现代框架,以及NestJS(Node.js,Typescript Web框架)。
语法甚至可以说它比我们遇到的其他框架更有趣:
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文档:编写API接口后,你就可以使用符合标准的UI如SwaggerUI,ReDoc等来使用API"text-align: center">
那性能呢?FastAPI是基于Starlette库构建的,其性能可与Node相匹配,在某些情况下甚至可以与Go相匹配。总而言之,我真的有一种感觉,FastAPI将成为Python的顶级异步框架。
总结
如今,Python异步生态正在发生很多事情。出现了新的框架,旧的框架正在重写,很多库开始支持异步行为。对于Web框架,Python已准备就绪,可提供出色的性能。如果很长一段时间你在考虑迁移到Node或者go,那现在不需要了。
原文参考连接:https://geekflare.com/python-asynchronous-web-frameworks/
以上就是python 5个顶级异步框架推荐的详细内容,更多关于python 异步框架的资料请关注其它相关文章!
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新日志
- 《暗喻幻想》顺风耳作用介绍
- 崔健1985-梦中的倾诉[再版][WAV+CUE]
- 黄子馨《追星Xin的恋人们2》HQ头版限量编号[WAV+CUE]
- 孟庭苇《情人的眼泪》开盘母带[低速原抓WAV+CUE]
- 孙露《谁为我停留HQCD》[低速原抓WAV+CUE][1.1G]
- 孙悦《时光音乐会》纯银CD[低速原抓WAV+CUE][1.1G]
- 任然《渐晚》[FLAC/分轨][72.32MB]
- 英雄联盟新英雄安蓓萨上线了吗 新英雄安蓓萨技能介绍
- 魔兽世界奥杜尔竞速赛什么时候开启 奥杜尔竞速赛开启时间介绍
- 无畏契约CGRS准星代码多少 CGRS准星代码分享一览
- 张靓颖.2012-倾听【少城时代】【WAV+CUE】
- 游鸿明.1999-五月的雪【大宇国际】【WAV+CUE】
- 曹方.2005-遇见我【钛友文化】【WAV+CUE】
- Unity6引擎上线:稳定性提升、CPU性能最高提升4倍
- 人皇Sky今日举行婚礼!电竞传奇步入新篇章