现代开发者必备:5个更流畅、更受欢迎的Python web框架

开发 架构
如今,可供选择的Python web框架有不少,能帮助你更快更轻松地创建web应用。本文就将为大家介绍一些更现代、使用更广泛的web框架。

本文转载自公众号“读芯术”(ID:AI_Discovery)。

如今,可供选择的Python web框架有不少,能帮助你更快更轻松地创建web应用。本文就将为大家介绍一些更现代、使用更广泛的web框架。

[[331985]]

1. FastAPI

FastAPI致力于实现轻便和快速,笔者很喜欢它,它的开发速度和简单程度令人欣慰。这对于端点特别有用,因为它们除了逻辑之外通常没有太多内容,而且很可能不需要Django或TurboGears等工具提供的所有无用信息来创建。

FastAPI也有非常好的文档,这让它变得易于学习。FastAPI中的“快”代表了开发api所需要的速度和这些api返回的速度。与其他web框架类似,它还基于API创建的开放标准,你可以在一个方便的包中获得传输数据所需的所有工具。

在语法方面,FastAPI采用一种非常类似于flass的方法来创建端点。

  1. from fastapi import FastAPI 
  2. app = FastAPI()   
  3. @app.get("/") 
  4. async def root(): 
  5.      return {"message":"Hello World"} 

2. Tornado

Tornado不仅是一个优秀的web框架,而且还是一个异步网络库,这让Tornado就能够为数以千计的开放连接服务。Tornado使用非阻塞网络进出流,使得它对于需要庞大且可伸缩的解决方案非常有用。

实际上,Tornado与大多数其他Python web框架有很大不同,它不在WSGI上运行。虽然这意味着在web服务器的选择上可能受到一些限制,但Tornado提供了预打包服务器,可以立即启动并运行。

虽然笔者很喜欢Tornado,但需要注意的是,当笔者尝试用NGINX部署它时确实遇到了很多bug。而且在某些情况下,让NGINX路由到正确的位置是并不是一件开心的事儿。笔者也遇到过Genie for Julia,不确定是什么原因造成的,但如果使用Tornado,那么最好设置一个Apache服务器,而不是NGINX服务器。

在语法方面,Tornado采用的是非常类似TurboGears的路由方法。使用Tornado时,通常会构建类来处理这些路由上的响应,而不是将逻辑放在路由中,来看看这个例子:

  1. import tornado.ioloop 
  2. import tornado.web 
  3.  
  4. class MainHandler(tornado.web.RequestHandler): 
  5.     def get(self): 
  6.         self.write("Hello,world") 
  7.  
  8. def make_app(): 
  9.     returntornado.web.Application([ 
  10.         (r"/", MainHandler), 
  11.     ]) 
  12.  
  13. if __name__ == "__main__": 
  14.     app = make_app() 
  15.     app.listen(8888) 
  16.    tornado.ioloop.IOLoop.current().start() 

3. Quart

不要被Quart的标志搞晕了,它与Flash模块关系更紧密,而不是Bottle模块。Quart本质上是把两个web框架放入一个模块的组合:Asyncio和Flask。

这是一件了不起的事情,这两者的结合称得上完美!与Flask一样,Quart是轻量级的,但是也包含了一个完整的异步特性列表。

笔者也很喜欢Quart,它感觉就像一个稍微加强了的Flask,在添加更多功能的过程中不会降低速度或易用性。有趣的是,Quart文档实际上建议你访问Flask文档,笔者认为这正说明了它的分叉特性。如果你想要一个异步Flask,Quart是很好的选择。

  1. from quart import Quart 
  2. app = Quart(__name__) 
  3. @app.route('/') 
  4. async def hello(): 
  5.     return 'hello' 
  6. app.run() 

4. BlackSheep

[[331989]]

“BlackSheep”受到了ASP.NET和Flask等优秀工具的启发,可用于轻松创建基于事件的web应用程序。笔者真的不明白为什么它被称为“BlackSheep”,这一框架背后的语法和方法与Flask几乎相同。

  1. from datetime import datetime 
  2. from blacksheep.server import Application 
  3. from blacksheep.server.responses import text 
  4. app = Application() 
  5. @app.route('/') 
  6. async def home(request): 
  7.     return text(f'Hello, World!{datetime.utcnow().isoformat()}') 

与Quart一样,Black Sheep也提供了非常棒的工具,用于在web上同步和创建非阻塞端点。整体上来讲,它是一个非常好用的框架,但与Quart非常相似。所以如果用了一个,你肯定也同时会使用这两个框架。

5. Pyramid

[[331990]]

Pyramid是笔者很喜欢使用的网络框架之一。虽然Pyramid坚持轻量级的想法,并提供非常简单的方法,以最小的代码快速建立端点,但它同时也包括所有你可能需要的功能。

Pyramid受赞誉最多的一点是它的可扩展性。Pyramid可以是基础的,也可以是复杂的,数据科学家会很喜欢它,他们可能想在未来扩展他们的端点。在句法上,Pyramid和Tornado大致相同。它始终遵循面向对象的范式。

  1. from wsgiref.simple_server importmake_server 
  2. from pyramid.config import Configurator 
  3. from pyramid.response import Response  
  4. def hello_world(request): 
  5.      return Response('HelloWorld!') 
  6. if __name__ == '__main__': 
  7.      with Configurator() asconfig:   
  8.         config.add_route('hello', '/') 
  9.         config.add_view(hello_world,route_name='hello')         
  10.         app = config.make_wsgi_app() 
  11.         server = make_server('0.0.0.0',6543, app) 
  12.         server.serve_forever() 

如今,有一些更现代、使用更广泛的web框架,能帮助你部署新的端点。它们各有亮点,但如果必须选择的话,笔者可能会选择FastAPI。FastAPI简单、轻量级,一个字就是快。

当然,这并不是说FastAPI在每种情况下都是最好的选择。最好根据具体情况来决定需要的最佳特性是什么然后再选择,而不是根据主观意见。

如果有足够的存储空间,所有这些框架都是值得一试。如果想让体验更上一层楼,下一步就是对请求响应进行一些速度测试,看看谁是最佳。

 

责任编辑:赵宁宁 来源: 今日头条
相关推荐

2021-11-18 17:41:47

Android 12安卓

2012-08-21 15:15:06

Linux操作系统

2022-04-15 15:08:52

加密货币货币工具

2018-03-06 09:57:17

HackerRankPython编程

2013-01-06 13:30:27

2017-10-23 09:27:47

2023-11-30 15:30:19

Python编程语言

2014-02-12 10:46:00

WebJavaScript音频库

2020-02-12 14:12:16

Python数据库开源

2012-07-16 10:21:23

iPhone

2015-10-13 09:24:24

Chrome开发者工具

2011-01-10 10:57:33

WebPHPJavaScript

2017-06-13 13:29:32

前端框架

2011-10-31 15:08:54

Chrome插件Web设计开发

2011-09-06 15:16:42

PHP

2018-04-23 10:05:41

Java Web框架Spring

2018-10-29 10:08:01

2022-05-05 11:17:24

人工智能机器人服务机器人

2020-02-16 20:43:49

Python数据科学R

2013-07-15 13:42:25

开发移动应用
点赞
收藏

51CTO技术栈公众号