当前位置: 移动技术网 > IT编程>脚本编程>Python > python 5个顶级异步框架推荐

python 5个顶级异步框架推荐

2020年09月10日  | 移动技术网IT编程  | 我要评论
python在3.4引入了 asyncio 库,3.6新增了关键字 async和await,此后,异步框架迅速发展了起来,性能上能和node.js比肩,除非是cpu密集型任务,否则没有理由不适用异步框

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​​。

那性能呢?fastapi是基于starlette库构建的,其性能可与node相匹配,在某些情况下甚至可以与go相匹配。总而言之,我真的有一种感觉,fastapi将成为python的顶级异步框架。

总结

如今,python异步生态正在发生很多事情。出现了新的框架,旧的框架正在重写,很多库开始支持异步行为。对于web框架,python已准备就绪,可提供出色的性能。如果很长一段时间你在考虑迁移到node或者go,那现在不需要了。

原文参考连接:

以上就是python 5个顶级异步框架推荐的详细内容,更多关于python 异步框架的资料请关注移动技术网其它相关文章!

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网