Pyramid:从小脚本到大型应用,一个框架走到底
文章目录Pyramid从小脚本到大型应用一个框架走到底1、 定位在 Django 和 Flask 之间站住脚2、 路由Traversal 和 URL Dispatch 双模式3、 扩展机制Tween 链和 Configurator4、 快速上手5、 在哪些场景下选它6、 小结Pyramid从小脚本到大型应用一个框架走到底Pyramid 在 GitHub 上拿到了 4,086 个 Star。它是 Pylons Project 维护的一个 Python Web 框架。项目从 2010 年启动到现在已经跑了超过 15 年。社区不大但稳定文档齐全生产环境里跑得动。1、 定位在 Django 和 Flask 之间站住脚Python Web 框架的选择长期在两极之间摇摆。Django 功能齐全但起步重Flask 极简但项目复杂后组织成本高。Pyramid 选了第三条路从小开始按需生长。一个 Hello World 只需要十几行代码没有自动生成的脚手架没有暗箱配置。每个步骤都是自己写的也都能自己控制。随着项目变大路由分发、模板引擎、数据库集成、认证授权这些模块可以逐步加上去。框架不强制绑定任何特定组件每个部分都可以替换。实际开发中很多项目都是从原型起步的。用重框架前期配置成本高用微框架到了中期又要在第三方生态里东拼西凑。Pyramid 的设计让同一个框架覆盖从原型到生产的全过程。2、 路由Traversal 和 URL Dispatch 双模式Pyramid 的路由系统提供了两套机制。Traversal 是默认模式把 URL 路径逐段映射到对象树上的节点适合内容层级深、结构灵活的应用比如 CMS 或文档系统。URL Dispatch 是常见的模式匹配像一张路由表适合 REST API 这类路径结构固定的场景。两种模式可以在同一个项目里混用。后台接口用 URL Dispatch 做清晰的路由映射面向用户的内容页用 Traversal 处理灵活的层级互不干扰。视图函数接受一个 request 对象返回一个 response 对象。没有隐式的全局状态没有自动绑定的上下文变量。request 携带了所有信息这让单元测试非常直接构造一个 request调用视图函数检查返回值。3、 扩展机制Tween 链和 ConfiguratorPyramid 的扩展叫 Tween本质上是 WSGI 中间件的框架内封装。每个请求依次经过 Tween 链最后到达视图函数。自定义 Tween 可以插入请求日志、性能监控、异常处理等逻辑不用动业务代码。Configurator 系统负责注册路由、视图和扩展。支持声明式和命令式两种写法声明式用装饰器命令式用方法调用。团队可以按自己的偏好选择不强制任何一种风格。这种配置方式的实际好处是显式。所有路由和视图的映射关系在配置中集中可见排查问题时不需要在多个文件之间跳来跳去追踪隐式注册逻辑。4、 快速上手pipinstallpyramid官方的 Hello Worldfromwsgiref.simple_serverimportmake_serverfrompyramid.configimportConfiguratorfrompyramid.responseimportResponsedefhello_world(request):returnResponse(Hello World!)if__name____main__:withConfigurator()asconfig:config.add_route(hello,/)config.add_view(hello_world,route_namehello)appconfig.make_wsgi_app()servermake_server(0.0.0.0,6543,app)server.serve_forever()代码量少但每一步的含义都很清楚注册路由、绑定视图、构建 WSGI 应用、启动服务。没有捷径也没有隐蔽的约定。5、 在哪些场景下选它小型 API 服务起步快没有 Django 那样的初始化负担。中型企业应用也能驾驭。路由分层、权限控制、模板渲染这些能力通过配置逐步加入项目中期不需要为了架构升级而迁移框架。对框架本身有定制需求的团队会喜欢 Pyramid 的组件化设计。Configurator、Tween、路由引擎这些核心模块都可以替换不需要 fork 项目。Pyramid 在 PyPA 的 Warehouse 项目中承担了生产验证。Warehouse 是 PyPI 官网的后端每天处理整个 Python 生态的包下载流量。这个案例本身就回答了能不能跑生产这个问题。6、 小结Pyramid 是一个做了明确取舍的框架。它把可控和可扩展放在第一位放弃了开箱即用的全能体验。从单文件脚本到大型应用一条路径走到底不用中途换框架。习惯 Django 或 Flask 的开发者花一个下午把文档过一遍大概就能判断它适不适合自己的项目。型应用一条路径走到底不用中途换框架。习惯 Django 或 Flask 的开发者花一个下午把文档过一遍大概就能判断它适不适合自己的项目。

相关新闻