0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

安利5个流畅自如的Python Web框架

如意 来源:百家号 作者:读芯术 2020-07-02 17:15 次阅读

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

1.FastAPI

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

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

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

from fastapi import FastAPI

app = FastAPI()

@app.get(“/”)

async def root():

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时,通常会构建类来处理这些路由上的响应,而不是将逻辑放在路由中,来看看这个例子:

import tornado.ioloop

import tornado.web

class MainHandler(tornado.web.RequestHandler):

def get(self):

self.write(“Hello,world”)

def make_app():

returntornado.web.Application([

(r“/”, MainHandler),

])

if __name__ == “__main__”:

app = make_app()

app.listen(8888)

tornado.ioloop.IOLoop.current().start()

3.Quart

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

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

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

from quart import Quart

app = Quart(__name__)

@app.route(‘/’)

async def hello():

return ‘hello’

app.run()

4.BlackSheep

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

from datetime import datetime

from blacksheep.server import Application

from blacksheep.server.responses import text

app = Application()

@app.route(‘/’)

async def home(request):

return text(f‘Hello, World!{datetime.utcnow().isoformat()}’)

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

5.Pyramid

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

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

from wsgiref.simple_server importmake_server

from pyramid.config import Configurator

from pyramid.response import Response

def hello_world(request):

return Response(‘HelloWorld!’)

if __name__ == ‘__main__’:

with Configurator() asconfig:

config.add_route(‘hello’, ‘/’)

config.add_view(hello_world,route_name=‘hello’)

app = config.make_wsgi_app()

server = make_server(‘0.0.0.0’,6543, app)

server.serve_forever()

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

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

图源:unsplash

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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Web
    Web
    +关注

    关注

    2

    文章

    1235

    浏览量

    68429
  • 框架
    +关注

    关注

    0

    文章

    297

    浏览量

    17038
  • python
    +关注

    关注

    51

    文章

    4667

    浏览量

    83440
收藏 人收藏

    评论

    相关推荐

    Python自动化测试框架及其应用

    Pytest是一个非常成熟的全功能的Python测试框架,与python自带的unittest测试框架类似,但是比unittest框架使用起
    的头像 发表于 04-03 16:15 128次阅读
    <b class='flag-5'>Python</b>自动化测试<b class='flag-5'>框架</b>及其应用

    【米尔-全志T113-i开发板试用】4、使用Gin框架搭建简易的web server和提供设备信息获取接口

    getInfo函数里,会获取一些不会变化的信息,例如CPU类型,内核版本,等等。 2、使用Gin提供json接口 Gin是一用Go语言编写的Web框架,它具有高性能和低内存消耗的特点。Gin
    发表于 02-22 16:23

    Python Web框架Django 5.0新特性

    根据 JetBrains 公布的 2022 Python 开发者调查结果,Python Web 框架的三巨头依旧是 Flask、Django 和 FastAPI。Django 和 Fl
    的头像 发表于 12-06 13:37 592次阅读

    基于Python 轻量级ORM框架

    ORM框架使用最广泛的就是SQLAlchemy和Django自带的ORM框架,但是SQLAlchemy的语法显然相对Django的ORM框架麻烦一点。 而Django本身是一个web
    的头像 发表于 11-01 11:17 329次阅读
    基于<b class='flag-5'>Python</b> 轻量级ORM<b class='flag-5'>框架</b>

    Kivy :开源跨平台的Python 框架

    好久没有写游戏系列教程了,今天恰好浏览到了 Kivy 这个开源跨平台的Python 框架,它能用于开发多点触控的用户界面程序,允许快速简单的交互设计,非常方便,于是有了制作本教程的想法
    的头像 发表于 10-31 15:27 542次阅读
    Kivy :开源跨平台的<b class='flag-5'>Python</b> <b class='flag-5'>框架</b>

    Python SDK包的使用

    Shodan Web端非常好用,但如果我们有从 Python 搜索的需求怎么办? 没关系,Shodan 官方也提供了 Python SDK 包,下面就来讲讲这个 SDK 包的使用。 1.准备 开始
    的头像 发表于 10-30 15:51 403次阅读
    <b class='flag-5'>Python</b> SDK包的使用

    PyCharm 2022.2支持最新 Python 3.11 和 PyScript 框架

    和新的 PyScript 框架的支持,能够帮助你完成这一过程。 让我们来看看它里面有什么吧! Python 3.11 PyCharm 2022.2 已经为 Python 3.11 中一些主要的功能提供了代码
    的头像 发表于 10-21 10:35 274次阅读
    PyCharm 2022.2支持最新 <b class='flag-5'>Python</b> 3.11 和 PyScript <b class='flag-5'>框架</b>

    python中matplotlib和seaborn介绍

    Python作为当前流行开发语言,不仅可以用于web网站的开发、自动化框架的设计等,也可用于到大数据领域,在大数据领域方面,我们不仅需要获取到大量的数据,并且还要将这些数据进行整合便于后续
    的头像 发表于 10-07 11:16 602次阅读
    <b class='flag-5'>python</b>中matplotlib和seaborn介绍

    Python失宠!Hugging Face用Rust新写了一个ML框架

    Pytorch 框架是用 Python 编写的,API 也是基于 Python 的,这让用户上手开发会非常快。另外,Python 本身就是一种简洁而易于学习的编程语言,很适合初学者和专
    的头像 发表于 08-11 16:24 400次阅读
    <b class='flag-5'>Python</b>失宠!Hugging Face用Rust新写了一个ML<b class='flag-5'>框架</b>

    fastapi框架原理及应用

    Starlette 是目前测试最快的 Python 框架。只有 Uvicorn 超越了它,Uvicorn 不是框架,而是服务器。   Starlette 提供了所有基本的 Web
    发表于 07-18 11:30 565次阅读

    Python常用的几个命令介绍

    Python是一种功能强大的编程语言,广泛用于数据分析、人工智能和Web开发等领域。在使用Python时,需要掌握一些基本的命令,以便更好地管理和运行代码。下面将介绍Python常用的
    的头像 发表于 06-21 17:12 1836次阅读

    Python写机器人上位机

    工具,Python使用 Tkinter 可以快速的创建 GUI 应用程序。由于 Tkinter 是内置到 python的安装包中、只要安装好 Python之后就能 import Tkinter 库、而且 IDLE也是用 Tkin
    发表于 05-09 11:10 0次下载
    <b class='flag-5'>Python</b>写机器人上位机

    # 面向万物智联的应用框架的思考和探索(上)

    ,一典型的应用以及相对应的应用框架的基础组成大致如下所示: Figure 1 典型的应用结构以及相应的系统运行环境 一典型的应用结构主要包括以下几个部分: 1)用户界面以及相应的业务处理逻辑。这里
    发表于 05-04 10:48

    OpenHarmony应用开发-ArkUI方舟开发框架简析

    ,方舟开发框架提供了两种开发范式,分别是基于ArkTS的声明式开发范式(简称“声明式开发范式”)和兼容JS的类Web开发范式(简称“类Web开发范式”)。 声明式开发范式:采用基于TypeScript
    发表于 04-23 09:35

    通过Python实现PLC数据可视化呈现于Web端的方案

    实现图形化动态展现PLC数据 Flask是一个使用Python编写的轻量级Web应用框架; 设计前端
    发表于 04-20 10:33 1次下载
    通过<b class='flag-5'>Python</b>实现PLC数据可视化呈现于<b class='flag-5'>Web</b>端的方案