发布日期:2024-01-25 18:38浏览次数:
行家好,用了 2 周的工夫摒挡了 Python 中全部的网站斥地库(下文简称:Web 框架),供行家练习参考。
Q:Web 框架究竟是什么?A:Web 框架首要用于网站斥地。斥地者正在基于 Web 框架完毕自身的交易逻辑。Web 框架完毕了许众成效,为完毕交易逻辑供给了一套通用措施。
Q:Web 框架有什么效率?A:行使 Web 框架,许众的交易逻辑外的成效不需求自身再去完好,而是行使框架已有的成效就可能。Web 框架使得正在举行 网站斥地的期间,淘汰了管事量。
Q:咱们为什么要行使 Web 框架?A:Web 框架首要用于网站斥地,可能完毕数据的交互和交易成效的完好。行使 Web 框架举行 网站斥地的期间,正在举行数据缓存、数据库拜望、数据平安校验等方面,不需求自身再从新完毕,而是将交易逻辑联系的代码写入框架就可能。
库排序是服从行使人数和文档的活动度为参考举行的,提议行家行使排名靠前的框架,由于它们的文档更完全,本事积聚要更众,社区更繁荣,能获得更好的声援,云云正在遭遇自身无法办理的题目,可能更疾更高效的找到解答的计划。
优 点:是一个高方针 Python Web 斥地框架,特色是斥地急迅、代码较少、可扩展性强。Django 采用 MTV(Model、Template、View)模子结构资源,框架成效充分,模板扩展采取最众。关于专业职员来说,Django 是当之无愧的 Python 排名第一的 Web 斥地框架。
缺 点:包含少许轻量级使用不需求的成效模块,不如 Flask 简捷。过分封装许众类和措施,直接行使对比方便,但改动起来对比贫困。比拟于 C,C++ 功能,Djang 功能偏低。模板完毕了代码和样式齐全辨别,阻挠许模板里闪现 Python 代码,敏捷度不敷。其余练习弧线也相对峻峭。
官 网:/en/2.0.x/优 点:Flask 是一个 Python Web 斥地的微框架,厉苛来说,它仅供给 Web 供职器声援,不供给全栈斥地声援。然而,Flask 特殊轻量、特殊方便,基于它搭筑 Web 体例都以分钟来计时,异常适合小微原型体例的斥地。花少工夫、出现可用体例,诟谇常划算的采取。
缺 点:关于大型网站斥地,需求计划途由照射的礼貌,不然导致代码芜杂。对新手来说,容易行使低质地的代码创筑 “不良的 web 使用次第”。
优 点:是一个扩展性很强且敏捷的 Python Web 斥地框架。上手万分容易,对比适合中等周围且边斥地边计划的场景。Pyramid 不供给绝对厉苛的框架界说,凭据需求可能扩打开发,对高阶次第员万分友爱。
缺 点:邦内着名度不高,高级用法需求通过阅读源代码获取灵感。默认行使 Chameleon 模板,敏捷度没有成为一个因素。
优 点:正如其名,web.py 是一个采用 Python 行为斥地发言的 Web 框架,方便且强壮。俄罗斯排名第一的 Yandex 探寻引擎基于这个框架斥地,Guido van Rossum 以为这是最好的 Python Web 框架,还需求说其余吗?有真相作证、有大牛认同,用起来吧!
缺 点:Web.py 并未像其他框架相同仍旧与 Python 3 兼容性的最新形态。这不光意味着缺乏对异步语法的声援,还意味着贫乏对已弃用的函数的缺点。另外,目前尚不清晰爱护者是否有布置正在 Python 2 抵达其声援性命周期下场后仍旧 Web.py 的最新形态。
优 点:Tornado 是一个基于异步汇集成效库的 Web 斥地框架,所以,它能声援几万个盛开邻接,Web 供职高效安静。可睹,Tornado 适合高并发场景下的 Web 体例,斥地经过需求采用 Tornado 供给的框架,敏捷性较差,确定场景后再商量行使不迟。
优 点:TurboGears 最新版本 试图办理 TurboGears 最第一版本、Django、Rails 等框架缺陷,它声援大都据库、JavaScript 东西集、众种数据换取形式等,当然,它斥地特殊高效,扩展性很强。试问它与 Django 哪个更好?还真欠好说,Django 社区更为活动或者更紧急。
缺 点:TurboGears 的少许弊端包含拘束成效较为基本,较少的第三方使用次第以及只要低级的文档。TurboGears 的一个庞大挑衅是它的胜过性。由于它混搭的其他组件都供给无尽的敏捷性, 当试图定夺何种途途来完工一个职责时它是过于丰富的。
优 点:CherryPy 或许闪开发者服从其他面向对象次第一致的计划措施斥地 Web 体例,进而采用起码的代码、最简短的格式。CherryPy 仍旧斥地了 10 年之久,安静性较好,特殊适合小周围 Web 体例和纯粹的 Python 次第员。感想到了什么?Python 大有一统江湖之势!拭目以待。
缺 点:只包蕴为 web 页面供给供职所需的少量实质外,它应当尽恐怕地让人感应它不像 “web 框架”,而是像任何其他类型的 Python 使用次第相同。CherryPy 包蕴的位用作初级修建块。包含会话标识符和 cookie 处置,但不包含 HTML 模板。像 Bottle 相同,CherryPy 供给了一种将途由照射到磁盘上的目次以供静态文献供职的措施。
优 点:Falcon 是一个声援大周围微供职 API 或挪动 App 后端呼应的 Web 斥地框架,它齐全基于 Python 并供给了特殊高的功能、牢靠性和可扩展性。Falcon 定位奇特且特质显着,关于 App 斥地者,后端体例修建可以商量 Falcon,十之八九是不会悔怨的。
缺 点:Falcon 弊端是其打包模块有点太少,有途由,中心件,钩子,除此除外就不供给其他成效了(裸壳)。出格其他成效,比方验证等都需求斥地职员来斥地扩展。由于其计划中就假设用于修建 REST API。
优 点:Asgineer 是一种编写异步 Web 使用次第的东西,行使尽恐怕少的空洞,同时仍旧供给友爱的 API。只需几分钟即可阅读指南和参考材料!正在 Uvicorn 上运转 Asgineer 时,它是可用的最疾的 Web 框架之一。它声援 http 长轮询、供职器端事变 (SSE) 和 websockets。而且具有以准确(且急迅)的格式为资产供给供职的适用次第。
优 点:Bottle 是一个用于 Python 的急迅、方便和轻量级的 WSGI 微型汇集框架。它行为单个文献模块分发,除了 Python 模范库除外没有任何依赖项。声援明净和动态的 URL。急迅和 Pythonic 内置模板引擎,声援 mako、jinja2 和 cheetah 模板。利便地拜望外单数据、文献上传、cookie、题目和其他与 HTTP 联系的元数据。
缺 点:Bottle 极简主义的一个后果是有些成效根基就不存正在。不声援外单验证,包含 CSRF 维护等成效。倘若要修建声援高度用户交互的 Web 使用次第,则需求自身增加它们。
优 点:编写优美的代码,笃志于您的产物,你应当把更众的工夫花正在你的产物而不是底层框架上。Emmett 是创造家的框架,由于它旨正在简化您的斥地经过,其语法方便、易于练习和分解。不要正在途由器和不恬逸的形式之间奢侈工夫:每次为使用次第写下途由时,全盘都清晰地展现正在您的目下。
优 点:行使类型注脚将央求 / 呼应声明为数据类和字典,行使 jsondaora 验证输入数据,最疾的 python api 框架之一,可能正在任何 asgi 供职器上运转。
优 点:Quixote 是一个行使 Python 编写基于 Web 的使用次第的框架。它的方向是按此递次完毕敏捷性和高功能。Quixote 使用次第的组织往往相同于古板使用次第。形式化网页的逻辑由 Python 类和函数构成。Quixote 不强制辨别外现逻辑和 “后端” 逻辑。相反,咱们荧惑您行使古板本事。比如,一种办理计划是将外现逻辑放正在其自身的子包中。
缺 点:固然 Quixote 获得主动爱护,但颁布频率较低。近来斥地的重心是修复缺点、降低模范合规性和增众 Quixote 的敏捷性。
优 点:reahl 是一个可能闪开发者齐全用 Python 发言编写 Web 使用的盛开框架,采用 Python 行为独一斥地发言是其最大特质。另外,reahl 供给了相当明晰且简明的斥地组筑,关于斥地日常成效性 Web 体例足够明晰且可行。
缺 点:供给空洞词汇时,无法驾驭少许更高级的用户界面结果,目前阻挠许行使 Sass 修建 Bootstrap 的篡改版本,并声援更高级的用户界面形式
优 点:Hug 是一个 Python 3 API 斥地框架。它的计划使软件工程师可能一次斥地 API,然后正在需求时再行使它。Hug 框架通过供给百般接口来简化 API 斥地。这即是为什么该框架被称为 Python 3 中最疾的框架之一的首要来由华体会。
缺 点:它行使以前的 WSGI 模范,这是一个同步框架,以是它不行处置像 WebSockets 和其他异步央求,不管何如说,它仍旧有特殊好的功能体现。
优 点:完毕了 ASGI3 接口并行使 Radix Tree 举行途由查找。是最疾的 Python web 框架之一。全盘特征都供职于急迅斥地高功能的 Web 供职。大宗准确的类型注脚,敏捷且高效的途由体例,可视化 API 接口与正在线调试,声援 Server-sent events 与 WebSocket,自带一键摆设敕令 (基于 uvicorn 与 gunicorn),可行使任何可用的 ASGI 生态。
缺 点:Index.py 不内置数据库、缓存等其他成效。采取贫困者请直接行使 Django。
优 点:Sanic 是一个 Python 3.7+ web 供职器和 web 框架,它的编写速率很疾。它容许行使 Python 3.5 中增加的 async/await 语法,这使您的代码无阻滞且急迅。该项主意方向是供给一种方便的措施来启动和运转一个高功能的 HTTP 供职器,该供职器易于修建、扩展和最终扩展。
缺 点:就成效方面 Sanic 模拟 Flask,比方通过共享 Blueprints 的观点,轻细的子使用次第,容许斥地职员正在更大的使用次第中拆分和结构其代码。关于光光是数据增点窜查 CRUD 使用,Sanic 也不是一个好的采取。
优 点:Starlette 是一个轻量级的 ASGI 框架 / 东西包,特殊适合修建功能异步供职,它是临蓐停当的,并为您供给以下实质:令人印象深远的体现。WwbSocket 声援。GraphQL 声援。过程内后台职责。启动和封闭事变。基于央求修建的测试客户端。CORS、GZip、静态文献、流呼应。会话和 Cookie 声援。100% 的测试掩盖率。100% 类型注脚代码库。零硬依赖。
缺 点:Starlette 供给了全部根本的 Web 微框架成效。然而它不供给主动数据验证,序列化或 API 文档。
优 点:FastAPI 是一个新颖、急迅(高功能)的 Web 框架,用于基于模范 Python 类型提示行使 Python 3.6+ 修建 API。特殊高的功能,与 NodeJS 和 Go 相当(谢谢 Starlette 和 Pydantic)。可用的最疾的 Python 框架之一。淘汰大约 40% 的人工(斥地职员)激发的缺点。简短,方便,直观,硬朗。
缺 点:恐怕是新项目, 打包还不太完好。就目前版本而言,少许代码还不行寻常管事。但接口花样仍旧界说完毕,等待后面版本会加上去。
优 点:Molten 是一个最小的、可扩展的、急迅的和高效的框架,用于行使 Python 修建 HTTP API。布置主动验证央求,代码更容易爱护。实例可主动序列化,包蕴 API 正在实际寰宇中平凡哀求的百般成效,渊博行使 PEP484 类型提示和 mypy。
缺 点:它没有行使像第三方库(如 Pydantic)供给数据验证,序列化和文档,它有自身的库。所以,这些数据类型界说将不太容易重用。依赖注入体例需求对依赖项举行预注册,而且将基于已声明的类型办理依赖题目。所以,不恐怕声明众个组件来供给一个特定的类型。
优 点:一个成效强壮的 Python Web 框架,可简化显式斥地实施,同时消灭全体形态。Clastic 是齐全用 Python 发言编写的,加强可重用性和可测试性,主动 URL 途由搜检,更好地掌握使用次第初始化,改正的中心件类型,没有全体形态,ORM 用法,更容易的 WSGI 集成。
缺 点:Clastic 没有修建全体形态;URL 途由礼貌参数和视图函数具名不配合,正在 Clastic 中,这种不配合会正在修建使用次第时激发分外。
优 点:用于 asyncio 和 Python 的异步 HTTP 客户端 / 供职器。声援客户端和 HTTP 供职器,声援开箱即用的供职器 WebSockets 和客户端 WebSockets,没有回调地狱。Web 供职用具有中心件、信号和可插入途由。
缺 点:凭据 RFC 7231 aiohttp 2.0 版本后做了采纳 HEAD 央求的安排,行使之前版本而且用 add_ get () 增加的央求,倘若行使 HEAD 措施拜望会返回 405。倘若处置器会写入许众呼应体实质,你可能正在推广 HEAD 措施时跳过处置呼应体实质以降低推广恶果。
优 点:新颖和以斥地职员为核心的 Python Web 框架全力于实实际际的 batteries,包含具有很众开箱即用成效的斥地职员东西,具有极其可扩展的架构。Masonite 特殊适合初学者斥地职员进入他们的第一个 Web 使用次第,以及需求充满操纵 Masonite 的十足潜力来完工他们的使用次第的体味充分的斥地职员。Masonite 勉力完毕从安置到摆设的急迅简单,所以斥地职员可能尽恐怕急迅有用地从观点到创筑。将其用于您的下一个 SaaS!考试一次,你就会坠入爱河。
缺 点:关于 Masonite 来说,最大的” 比赛敌手” 是 Django, 由于社区正正在竭尽致力将框架推向容易,令人愉悦的下一件大事。与 Django 比拟,Masonite 仍旧是婴儿,等待它异日的体现。
优 点:一个适合 ASGI 的 Web 微框架,采用基于类的途由措施。受 CherryPy 的影响但与 asyncio 兼容。一个名为 Qactuar 的配套 ASGI 供职器是从这个目前正正在举行的项目中出现的。
缺 点:正在行使拉取央求,请行使主动形式化次第 iSort 和 Black 并行使 MyPy 验证代码。这是正在不消灭某些类型缺点的情形下,并不老是可能使 MyPy 齐全得意,然而起码尽你所能并隆重行使注脚 `# type: ignore`。结果,考试,尽恐怕供给最切实的类型提示。
优 点:Cyclone 是 Python 的 Web 供职器框架,它将 Tornado API 完毕为 Twisted 订交。Twisted 是一个事变驱动的 Python 汇集编程框架。它是最成熟的非阻滞 I/O 库之一,可供公家行使。Tornado 是 FriendFeed 汇集供职器的开源版本,它是最盛行和最急迅的 Python 汇集供职器之一,具有效于修建汇集使用次第的特殊不错的 API。除了充分的成效集除外,Cyclone 还办理了 C10K 题目。
优 点:Klein 是一个微框架,用于行使 Python 斥地可用于临蓐的 Web 供职。它是 “微” 的,由于它具有相同于 Bottle 和 Flask 的特殊小的 API。它不是 “微”,由于它依赖于模范库除外的东西。这首要是由于它兴办正在渊博行使和经由优良测试的组件上,如 Werkzeug 和 Twisted。
优 点:AMQP RPC 和事变(颁布 - 订阅),HTTPGET、POST 和 websockets,CLI 完毕方便急迅的斥地,用于单位和集成测试的适用次第。
缺 点:nameko 微供职失足不会主动打印缺点日记,需求加上监控联系的依赖,筹划稠密型职责导致职责重试。
优 点:CubicWeb 是一种语义 Web 使用次第框架,正在 LGPL 下获取许可,它使斥地职员或许通过重用组件(称为立方体)并用命家喻户晓的面向对象计划准则来有用地修建 Web 使用次第。餍足常睹需求的可重用组件(数据模子和视图)库,Python 编程发言的强壮成效和敏捷性,用于存储后端的 SQL 数据库、LDAP 目次、Subversion 和 Mercurial 的牢靠性。
缺 点:要正在 CubicWeb 使用次第中获取或操作经久数据,可能行使联系查问发言(RQL),RQL 供给了一种高度辨别的途途来互相相闭百般数据源。然而,跟着它的完毕,通过手动修建查问行为字符串,它恐怕会让习性于 ORM 的斥地职员感觉落后。行使 CubicWeb 又有其他故障。最初,筑树恐怕很繁难。另一个潜正在的题目是贫乏本机模板引擎;天生 HTML 留给斥地职员。CubicWeb 声援 Python 3,但 Twisted 等模块自己并未齐全移植。
优 点:Zope 2 是一款基于 Python 的 Web 使用框架,是全部 Python Web 使用次第、东西的始祖,是 Python 家族一个强有力的分支。Zope 2 的 “对象颁布” 体例特殊适合面向对象斥地措施,而且可能减轻斥地者的练习弧线,还可能助助你出现使用次第里少许欠好的成效。
缺 点:Zope 不实用于方便的 RESTful API(每 Bottle 或 Flask),乃至不实用于具有交互性的根本网站(à la Django),因为 Zope 的尺寸和丰富性,安置需求少许管事;这不是方便地将源解压缩到项目子文献夹中的题目。
优 点:Web2py 是一个用 Python 发言编写的免费的开源 Web 框架,旨正在火速急迅的斥地 Web 使用,具有急迅、可扩展、平安以及可移植的数据库驱动的使用,用命 LGPLv3 开源订交。Web2py 供给一站式的办理计划,全部斥地经过都可能正在浏览器长进行,供给了 Web 版的正在线斥地,HTML 模版编写,静态文献的上传,数据库的编写的成效。其它的又有日记成效,以及一个主动化的 admin 接口。
缺 点:Web2py 的一个紧急节制是它仅与 Python 2.x 兼容。最初,这意味着 Web2py 无法行使 Python 3 的异步语法。倘若你依赖于 Python 3 独有的外部库,那么你就弗成运了。然而,正正在发展使 Web2py Python 3 兼容的管事,而且正在撰写本文时它已靠近完工
缺 点:Pylons 已与 repoze.bfg 团结,现正在处于仅爱护形式。热烈提议新项目从新团结的 Web 框架金字塔发端。
优 点:Cubes 是一个轻量级的 Python 框架和东西集,用于斥地讲演和领会使用次第、正在线领会处置 (OLAP)、众维领会和浏览凑集数据。它是 Data Brewery 的一个人。
弊端:不再为每个众维数据集供给隐式凑集 record_count。它务必真切界说为凑集:旧的后端架构是有节制的。它只容许行使一个商号,务必正在供职器启动之前明确模子,不恐怕从长途起源获取模子。
优 点:DPark 是 Spark 的 Python 克隆版本,是一个 Python 完毕的分散式筹划框架,可能特殊利便地完毕大周围数据处置和低延时的迭代筹划。该筹划框架相同于 MapReduce,然而比其更敏捷,可能用 Python 特殊利便地举行分散式筹划,而且供给了更众的成效,以便更好地举行迭代式筹划。DPark 由邦内的豆瓣公司斥地完毕和有劲爱护,据豆瓣公司的描画,目前豆瓣公司内部的绝大大都数据领会都行使 DPark 完工,全部项目也正趋于完好。
缺 点:Dpark 行使的是过程,正在 Python 中,因为 GIL (Global Interpreter Lock) 的存正在,尽管正在众核机械上行使众个线程,这些线程之间也没有步骤真正地完毕并发推广。