可以与 FastAPI 不分伯仲的 Python 著名的 Web 框架

打印 上一主题 下一主题

主题 523|帖子 523|积分 1569

正如你所明白的,任何范畴都不大概制止进步,不断利用相同的工具意味着不思进取。这一点在信息技能范畴,尤其是网络开发行业非常显着。
关于网络框架,不论是 Django 和 Flask 等传统框架还是 Python 的新型高级框架,不绝有着新的框架不断出现,它们正在挤掉传统和成熟的技能,它们特征更好、编码更方便、更简单、更快捷。
众所周知的 Python web 框架

Django

该网络框架是最流行的 Python 网络框架之一。它能让开发变得简单,编写易于明白的代码,并快速顺应开发。Django 支持与 MySQL、SQLite、PostgreSQL 和 Oracle 等主流数据库协同工作,还可以利用第三方驱动步伐。它提供了一个抽象层,无需编写 SQL 查询来获取/保存数据到数据库。Django 的功能包括身份验证、URL 路由、模板引擎、对象关系映射器(ORM)和数据库模式迁移(Django v.1.7 +)。
假如您选择 Django,就不必担心功能不敷。从模板引擎到对象关系映射,您将从这个框架中获得您所期望的一切。最重要的是,它是免费开源的。
Flask

Flask 是一个微型框架,因此更注意工作的简单性和快速构建须要网络服务的本事。与其他框架相比,Flask 的配置和安装时间更短;HTTP 功能的抽象层级更低。Flask 的灵感来自 Sinatra Ruby 框架。Flask 的焦点理念是为网络应用步伐打下坚实的基础。它有许多有用的功能:内置开发服务器和快速调试器、Jinja2 模板、支持安全 cookies 以及连接任何 ORM 的本事。它既得当低级网络开发职员,也得当盼望利用最佳实践、实现快速原型设计和创建独立应用步伐的专家。
Bottle

Bottle 是一个非常轻量级的框架,只需一个文件即可完成。只管它非常简约,但 Bottle 提供了相当丰富的功能,100% 可满意中小型项目的需求。
它包含了干净的 URL 路由,而模板则是该框架的强项。实用工具(即 “瓶子”)可方便地访问数据表格、文件上传、标题和其他与 HTTP 相干的元数据。它内置了一个 HTTP 开发服务器,支持 fapws3、bjoern、GAE、CherryPy 和其他任何支持 WSGI 的 HTTP 服务器。
对于原型设计、学习如何构造网络框架以及创建简单的应用步伐来说,这几乎是一个完美的解决方案。
后起 web 框架

现在,我们将扼要介绍一些 Python Web 框架,以便了解有哪些新的解决方案。对待任何新框架都需要给予关注和恭敬。起首,建议您在试点项目中试用新框架,研究它的优缺点,踩几脚耙子,然后才将其用于客户的商业项目中。
Sanic

Sanic 是一个 Python 3.8+ Web 服务器和 Web 框架,旨在快速运行。它答应利用 Python 3.5 中添加的 async/await 语法,这使您的代码非阻塞且快速。
在 Python 3.5 中,有一个利用 async/await 来构建异步步伐的新机会,Sanic 巧妙地利用了这一机会。这大概是现在为 Python 提供快速、可扩展 Web 服务器和集成 Web 框架的最简单、最方便的方法。该框架支持与路由器、各种格式(当然还有 JSON)和版本、异常处理、网络套接字、流式传输等的便捷协作。
特征:
Sanic 故意打造一个干净且不带私见的功能列表。该项目不想要求您以某种方式构建应用步伐,并试图避免规定特定的开发模式。社区构建和维护了多个第三方插件,以添加无法满意焦点存储库要求的附加功能。
为了帮助 API 开发职员,Sanic 构造维护了一个名为 Sanic Extensions 的官方插件,以提供各种好处,包括:


  • 利用 Redoc 和/或 Swagger 的 OpenAPI 文档
  • CORS 保护
  • 依靠注入到路由处理步伐中
  • 请求查询参数和正文输入验证
  • 预定义的、特定于端点的响应序列化器
示例:
  1. pip install sanic
复制代码
我们创建 server.py 文件并粘贴以下内容:
  1. from sanic import Sanic
  2. from sanic.response import text
  3. app = Sanic("MyHelloWorldApp")
  4. @app.get("/")
  5. async def hello_world(request):
  6.     return text("Hello, world.")
复制代码
然后在控制台中运行以下命令:
  1. sanic server
复制代码
Starlette

Starlette 将自己定位为性能极高的轻量级框架或工具包。非常得当用 Python 构建异步 Web 服务。
该框架基于异步服务器网关接口(ASGI),可作为其工具包利用。同时,它还支持 WebSocket、GraphQL、Session 和 Cookie。开发职员声明不与其他解决方案硬性绑定(零硬性依靠),并保证 100% 的测试覆盖率和 100% 的类型注释代码库。
特点:


  • 一个轻量级、低复杂度的 HTTP Web 框架
  • WebSocket 支持
  • 进程内背景使命
  • 启动和关闭事件
  • 基于 httpx 构建的测试客户端
  • CORS、GZip、静态文件、流响应
  • Session 和 Cookie 支持
  • 100% 测试覆盖率
  • 100% 类型注释代码库
  • 很少有硬依靠
  • 与 asyncio 和 trio 后端兼容
示例:
  1. pip install starlette uvicorn
复制代码
我们创建一个 server.py 文件并写入以下代码:
  1. from starlette.applications import Starlette
  2. from starlette.responses import JSONResponse
  3. from starlette.routing import Route
  4. async def homepage(request):
  5.     return JSONResponse({'hello': 'world'})
  6. routes = [
  7.     Route("/", endpoint=homepage)
  8. ]
  9. app = Starlette(debug=True, routes=routes)
复制代码
然后,我们在控制台中运行以下命令:
  1. uvicorn server:app
复制代码
假如您的项目需要可靠的执行,并且对构建系统的组件有很高的要求,那么这一点就非常重要。该框架需要 Python 3.6 以上版本才能安装和运行。您还需要安装 ASGI 服务器,如 uvicorn、daphne 或 hypercorn。
Masonite

Masonite 是适用于 Python 的全新网络框架,是为开发职员创建的最佳框架之一。该框架的创建者对峙认为它具有更好的可扩展性,这从根本上将该解决方案变成了一个良好的框架,可在将来为您的项目添加各种附加功能。它是新手开发者的理想选择,但对这一范畴的专家也很有用。Masonite 具有简单的路由机制。可以利用 Active Record ORM。该框架已可在 Python 3.4+ 环境下利用最新版本的 OpenSSL 和 Pip3。
FastAPI

假如您项目的主要使命是支持 OpenAPI,那么您可以利用快速可靠的 FastAPI 框架。据开发职员称,FastAPI 的速率可与 NodeJS 和 Go 相媲美。
此外,该框架还能立刻提供主动交互式文档。它利用 Python 3.6+、Starlette(用于网页部分)、Pydantic(用于数据部分)和 uvicorn(用于加载和服务应用步伐的服务器)。
Falcon

Falcon 是一个可靠、高性能的 Python Web 框架,用于构建大规模应用步伐后端和微服务。它可以与任何 WSGI 服务器配合利用,鼓励 REST 架构风格,并实验在保持高效的同时尽大概少地完成工作。
Falcon 用尽大概少的代码保持高效的性能。
示例:
  1. pip install falcon, uvicorn
复制代码
我们创建一个 server.py 文件并写入如下代码内容:
  1. import falcon
  2. import falcon.asgi
  3. class ThingsResource:
  4.     async def on_get(self, req, resp):
  5.         """Handles GET requests"""
  6.         resp.status = falcon.HTTP_200
  7.         resp.content_type = falcon.MEDIA_TEXT
  8.         resp.text = (
  9.             '\nTwo things awe me most, the starry sky '
  10.             'above me and the moral law within me.\n'
  11.             '\n'
  12.             '    ~ Immanuel Kant\n\n'
  13.         )
  14. app = falcon.asgi.App()
  15. things = ThingsResource()
  16. app.add_route('/things', things)
复制代码
然后在命令行中利用如下命令举行启动:
  1. uvicorn server:app
复制代码
Responder

由于众所周知的原因,Responder 以 Starlite 为基础,答应用户利用 jinja2 模板引擎(无需额外导入)构建 ASGI 应用步伐,并预装可正常运行的静态文件服务器。为了与网络服务器协同工作,我们利用了 uvloop,它能以 gzip 压缩方式主动处理请求。
作者称该框架结合了 Flask 和 Falcon 的两种乐成方法。一方面,它利用 Flask 风格的路由表达式,另一方面,它利用 Falcon 的方法 “每个请求和响应都被通报到每个视图中并发生变化”。重要的是,框架自带内置测试客户端。
Molten

Molten 是一个最小化、可扩展、快速且高效的框架,用于利用 Python 构建 HTTP API。Molten 的特点包括:根据预定义模式主动验证请求、依靠注入、支持基于函数的中间件、配置文件、Prometheus 指标、请求 ID、会话、SQLAlchemy、模板、WebSockets 等。此外,Molten 还是类型安全的。该项目文档齐备,并有作者提供支持。
Python Klein

Klein 是一个微型框架,用于利用 Python 开发生产就绪的网络服务。它基于 Werkzeug 和 Twisted 等广泛利用且久经考验的组件构建。Klein 的应用步伐接口非常简约,与 Bottle 和 Flask 相似,因此受到开发职员的推崇。它不依靠第三方库。Klein 还支持 Python 3.5+ 中的 async 和 await 关键字。Klein 还支持许多路由的统一错误处理代码。
Quart

这是一个非常风趣的框架,由于它支持 Flask 应用步伐和 Asyncio 异步调用。通过这种组合,可以利用流行的 Flask 框架和 Python 3.5 的当代编程机制。Quart 支持 Flask 扩展,并能利用视频和 Websockets。Flask 有一个标准的迁移技能。Quart 支持完整的 ASGI 3.0 规范。Tox 支持测试。
BlackSheep

受 Flask 和 ASP.NET Core 的启发,BlackSheep 是一个异步 Web 框架,用于构建基于事件的非阻塞 Python 网络应用步伐。此外,BlackSheep 还提供了一个可随时启动的 MVC 项目模板。
它具有与 FastAPI 类似的语法,并且可以与 Uvicorn 一起利用。正如文档所述,它也经过测试可以利用 Hypercorn 作为 ASGI HTTP 服务器(即 uvicorn)。
特征:


  • 丰富的代码 API,具有主动绑定和依靠注入功能
  • 提供了处理身份验证和授权的策略。
  • 编写友好的代码库,借助 IDE 编码时的提示,可提供舒适的开发体验
  • 内置生成 OpenAPI 文档,支持版本 3、YAML 和 JSON
  • 跨平台框架,利用最当代版本的 Python
  • 良好的性能表现
示例:
  1. pip install blacksheep uvicorn
复制代码
创建 server.py 文件,并写入如下的代码:
  1. from datetime import datetime
  2. from blacksheep import Application
  3. app = Application()
  4. @app.route("/")
  5. def home():
  6.     return f"Hello, World! {datetime.utcnow().isoformat()}"
复制代码
然后,我们在控制台中运行以下命令:
  1. uvicorn server:app
  2. --port 44777 --reload
复制代码
这个高性能框架将焦点软件包保持在最低水平,并尽大概专注于 HTTP 和 HTML 标准中定义的功能。它答应开发可在云中摆设的无状态应用步伐。
Cyclone

Twisted 是 Python 的一个事件驱动网络编程框架,Cyclone 利用它为网络框架构建了 Tornado API。Cyclone 是最稳固可靠的非阻塞 I/O 网络框架。它提供了用于操纵 HTTP 头信息和 URL 的 httputil。Cyclone 支持国际化、内联 SQLite、非阻塞 Redis 客户端、利用 OpenID 和 OAuth 的第三方登录、XML 和 JSON 编码的远程过程调用,以及许多其他功能。
Pyramid

Pyramid 是一个开源 Python 网络框架。其主要目的是以最低的复杂度构建网络应用步伐。
Pyramid 既适用于小型应用步伐,也适用于大型应用步伐。Pyramid 的特点包括可以构建单文件应用步伐、利用全面的模板和资产规范、灵活的身份验证和授权。它拥有强大的测试、支持和全面的数据文档。Pyramid 提供函数装饰器、谓词和呈现器。
Robyn

Robyn 是一个快速异步 Python Web 框架,配有一个用 Rust 编写的 Web 服务器。
特征:


  • 认证与授权
  • 中间件
  • 跨域资源共享
  • WebSockets
  • 子路由器
  • 视图
  • 利用 Jinja2 举行模板化
  1. pip install robyn
复制代码
简单 Hello World 示例:
  1. from robyn import Robyn
  2. app = Robyn(__file__)
  3. @app.get("/")
  4. async def h(request):
  5.     return "Hello, world!"
  6. app.start(port=8080)
复制代码
然后,我们在控制台中运行以下命令:
  1. python3 app.py
复制代码
LiteStar

Litestar 是一个强大、灵活、高性能且独特的 ASGI 框架。
特征:


  • 插件
  • 附带依靠注入
  • 安全原语
  • OpenAPI 模式生成
  • 消息包、中间件
  • 精彩的 CLI 体验
示例:
  1. pip install litestar[standard]
复制代码
我们创建 app.py 文件并写入以下代码:
  1. from litestar import Litestar, get  
  2.   
  3.   
  4. @get("/")  
  5. async def index() -> str:  
  6.     return "Hello, world!"  
  7.   
  8.   
  9. @get("/books/{book_id:int}")  
  10. async def get_book(book_id: int) -> dict[str, int]:  
  11.     return {"book_id": book_id}  
  12.   
  13.   
  14. app = Litestar([index, get_book])
复制代码
然后,我们在控制台中运行以下命令:
  1. litestar run uvicorn app:app --reload
复制代码
Emmett

Emmett 是一个全栈 Python Web 框架,设计时考虑到了简单性。
Emmett 的目的是易于明白、易于学习和利用,以便您可以完全专注于产物的功能。
特点:


  • 路由系统
  • 模板系统
  • Websockets
  • 验证
  • Forms 生成
  • Sesions
  • 权限系统
  • 缓存
  • ORM
示例:
  1. pip install emmett
复制代码
我们创建一个 app.py 文件并写入以下代码:
  1. from emmett import App
  2. app = App(__name__)
  3. @app.route("/")
  4. async def hello():
  5.     return "Hello world!"
复制代码
然后,我们在控制台中运行以下命令:
  1. emmett develop
复制代码
总结

时至今日,很难说能有哪个框架会取代古老而良好的 Django、Flask 和 Bottle。但是技能在不断发展和进步,尤其是 Python 的网络框架层出不穷,有着大量的良好 Web 框架。通过不断学习,选择在实际业务中利用更准确、更高效的网络应用步伐开发框架,并提供新的改进功能。
本文分享这么多框架,也可以看到其中很多框架有着几乎类似的语法,假如对其中一种框架很认识,那么也会很容易利用其他框架。
盼望能对你有所帮助,以为文章有用,请点个赞支持一下,谢谢~
关于Python学习指南

学好 Python 不论是就业还是做副业赢利都不错,但要学会 Python 还是要有一个学习规划。最后给各人分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、主动化办公等学习教程。带你从零基础系统性的学好Python!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

伤心客

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表