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

    文章

    1309

    浏览量

    74953
  • 框架
    +关注

    关注

    0

    文章

    404

    浏览量

    18491
  • python
    +关注

    关注

    58

    文章

    4884

    浏览量

    90300
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    FBX/glTF 模型渲染与动画技术解析 | 图扑 HT 框架

    Web 3D 渲染框架, 为 FBX/glTF 模型的骨骼动画、材质切换及自定义 Shader 开发提供完善支持 ,可大幅降低开发门槛,提升 3D 应用的开发效率与视觉呈现质量。 FBX/glTF 模型骨骼动画实现 骨骼动画是复杂 3D 模型动态交互的核心能力。HT
    的头像 发表于 04-21 11:31 16次阅读
    FBX/glTF 模型渲染与动画技术解析 | 图扑 HT <b class='flag-5'>框架</b>

    Python全栈一课通(470集)(12.96 GB)-网盘资源下载

    ”——部门间的沟通壁垒、接口联调的互相推诿、需求传递的信息损耗。 Python 全栈的经济学价值,首先体现在“边界消除”。当你同时掌握了 Web 开发、接口设计与自动化测试时,你实际上在一人的身上
    发表于 04-19 16:30

    【诚邀体验】 安利AI使用工具!

    已经可以帮忙编写代码、解释函数、分析错误甚至独立完成项目,但是在实际开发中,一常见的问题仍然存在:通用AI虽然能力强大,但在更专业更细分的嵌入式领域仍然需要足够
    的头像 发表于 04-10 18:25 93次阅读
    【诚邀体验】 <b class='flag-5'>安利</b>一<b class='flag-5'>个</b>AI使用工具!

    [VirtualLab] 使用Python运行VirtualLab Fusion光学仿真

    使用代码编辑器Visual Studio Code(VS Code),因为它提供了一用户友好的安装工作流程*。当然,如果需要,也可以使用其他Python编辑器。 对于使用VS Code的用户: 1.1
    发表于 03-31 09:39

    Python运行本地Web服务并实现远程访问

    本文介绍使用Python搭建本地Web服务并结合 ZeroNews 实现公网访问。
    的头像 发表于 02-06 11:39 337次阅读
    <b class='flag-5'>Python</b>运行本地<b class='flag-5'>Web</b>服务并实现远程访问

    【EASY EAI Nano-TB(RV1126B)开发板试用】命令行功能测试-红绿灯按钮项目-Python实现简单的Web服务器

    Nano-TB(RV1126B)****开发板‌,构建一能够通过Web服务读取物理按键三色LED灯状态的设备监控系统,打造符合简单状态显示需求的服务器。 硬件 EASY EAI Nano-TB
    发表于 11-16 16:35

    PYQT 应用程序框架及开发工具

    大家好,本团队此次分享的内容为开发过程中使用到的PYQT 应用程序框架及开发工具。 pYqt 是一多平台的 python 图形用户界面应用程序框架,由于其面向对象、 易扩展(可
    发表于 10-29 07:15

    NVIDIA TensorRT LLM 1.0推理框架正式上线

    部署热门开源模型的应用场景,框架已支持 GPT-OSS、DeepSeek、Llama 2 及 Llama 3 等主流模型的端到端部署;另一方面,框架将部署功能封装为可扩展的 Python 框架
    的头像 发表于 10-21 11:04 1401次阅读

    termux如何搭建python游戏

    戏开发流程 以Pygame为例,创建一基础窗口: ```python import pygame pygame.init() screen = pygame.display.set_mode
    发表于 08-29 07:06

    广汽携手安利捷进军英国市场

    近日,广汽在英国伦敦举行签约仪式,并宣布与安利捷签署合资协议,标志着广汽正式进入英国市场,进一步完善其在欧洲的战略布局。安利捷将作为广汽的合作伙伴,在英国销售广汽的新能源乘用车。根据计划,广汽两款全球战略车型AION V和AION UT将率先导入英国市场,并于2026年第
    的头像 发表于 07-21 17:05 1001次阅读

    基础篇3:掌握Python中的条件语句与循环

    通过学习条件语句和循环,您能够编写出能够根据不同情况和条件作出决策的Python程序。这些结构在编程中非常常见,对于提高编程能力和构建复杂程序至关重要。在接下来的学习和实践中,不断练习这些概念,您将能够更自如地运用它们来解决实际问题。
    发表于 07-03 16:13

    labview如何调用web api

    同事给了一web api 的接口地址,方法名等等。但是我不会用labview去调用。求高手指点!
    发表于 06-26 17:24

    鸿蒙5开发宝藏案例分享---Web开发优化案例分享

    ;gt;ArkWeb</span>(方舟Web)组件加载Web页面的优化技巧,简直是提升应用流畅度的神兵利器。官方文档写得比较“正经”,我这就把它掰开了、揉碎了,加上我自己
    发表于 06-12 17:20

    鸿蒙5开发宝藏案例分享---Web加载时延优化解析

    鸿蒙开发宝藏:Web加载完成时延优化实战 大家好呀!今天在翻鸿蒙开发者文档时,发现了一隐藏的 性能优化宝藏区 ——官方竟然悄悄提供了超多实战案例!尤其是****Web加载完成时延分析这块,简直是
    发表于 06-12 17:11

    鸿蒙5开发宝藏案例分享---体验流畅的首页信息流

    ?** 鸿蒙新闻类首页开发全攻略:流畅动效+懒加载实战** Hey 各位鸿蒙开发者! 今天要分享一超实用的鸿蒙新闻类首页开发方案,官方文档里藏着的宝藏案例被我挖出来了!从流畅的Tab切换动效到丝滑
    发表于 06-12 11:42