Pyramid框架介绍
-
Upload
panjunyong -
Category
Technology
-
view
5.707 -
download
7
description
Transcript of Pyramid框架介绍
![Page 1: Pyramid框架介绍](https://reader035.fdocuments.net/reader035/viewer/2022081416/55631c20d8b42a81528b5309/html5/thumbnails/1.jpg)
Pyramid 框架介绍small, documented, tested, extensible, fast, and friendly
潘俊勇 weibo.com/panjunyong
易度云办公 everydo.com
![Page 2: Pyramid框架介绍](https://reader035.fdocuments.net/reader035/viewer/2022081416/55631c20d8b42a81528b5309/html5/thumbnails/2.jpg)
我来自落魄的 Zope 社区
曾无比风光: Python 杀手应用大客户包括 NASA ,美国海军,通用电气、波士顿在线
![Page 3: Pyramid框架介绍](https://reader035.fdocuments.net/reader035/viewer/2022081416/55631c20d8b42a81528b5309/html5/thumbnails/3.jpg)
突然回光返照了?
![Page 4: Pyramid框架介绍](https://reader035.fdocuments.net/reader035/viewer/2022081416/55631c20d8b42a81528b5309/html5/thumbnails/4.jpg)
Pyramid/Zope 历史课
zope2 zope3
grok
Repoze.bfg
bluebream
Pylons
Pyramid
cmf
plone
PaulChisTres
ZODB
Robert, Jim
J2EE
![Page 5: Pyramid框架介绍](https://reader035.fdocuments.net/reader035/viewer/2022081416/55631c20d8b42a81528b5309/html5/thumbnails/5.jpg)
我的 web 技术生涯 2002 年,开始折腾 python/zope2 2003 年,开始靠 Plone 做些项目 2007 年,开始用 Plone 线上软件运营 2008 年,深入跟踪 Grok 开发框架 2008 年,抛弃 Plone ,用 Zope3 开发易度云办公 2009 年,使用 bfg 做部分应用 2011 年,使用 pyramid 开发易度云查看 未来易度云办公,会更多使用 pyramid
![Page 6: Pyramid框架介绍](https://reader035.fdocuments.net/reader035/viewer/2022081416/55631c20d8b42a81528b5309/html5/thumbnails/6.jpg)
易度云办公: bluebream
![Page 7: Pyramid框架介绍](https://reader035.fdocuments.net/reader035/viewer/2022081416/55631c20d8b42a81528b5309/html5/thumbnails/7.jpg)
易度云查看: pyramid
![Page 8: Pyramid框架介绍](https://reader035.fdocuments.net/reader035/viewer/2022081416/55631c20d8b42a81528b5309/html5/thumbnails/8.jpg)
Python 的 web 框架 微框架
Web.py, flask, bottle, web2py 中型
Pyramid, turbogears 重型框架
Zope / Django / Plone 异步 ( 实时 ) 框架
Twisted, tornado, gevent
![Page 9: Pyramid框架介绍](https://reader035.fdocuments.net/reader035/viewer/2022081416/55631c20d8b42a81528b5309/html5/thumbnails/9.jpg)
Python 社区数十种 web 框架,选择那个?
女怕嫁错郎男怕入错行
咱 web 程序员怕进错“框”
![Page 10: Pyramid框架介绍](https://reader035.fdocuments.net/reader035/viewer/2022081416/55631c20d8b42a81528b5309/html5/thumbnails/10.jpg)
企业应用,还是互联网应用? 企业应用:
需求复杂,快速开发 用户数少,性能不关注 能用就行,产品化要求不高
适合重框架 Django/plone/zope
注意 企业应用正在互联网化 基于互联网的企业应用平台
才是发展未来
互联网应用 需求简单 性能非常敏感
适合偏轻框架
互联网是未来
![Page 11: Pyramid框架介绍](https://reader035.fdocuments.net/reader035/viewer/2022081416/55631c20d8b42a81528b5309/html5/thumbnails/11.jpg)
实时要求高吗? 比如:
聊天 大量实时互动
考虑方案 Twisted Tornado Gevent + 现有轻框架
![Page 12: Pyramid框架介绍](https://reader035.fdocuments.net/reader035/viewer/2022081416/55631c20d8b42a81528b5309/html5/thumbnails/12.jpg)
对简单的拿捏 Python Zen:
Beautiful is better than ugly. Explicit is better than implicit. Simple is better than complex. Complex is better than complicated.
崇尚简单,但喜欢 Explicit
![Page 13: Pyramid框架介绍](https://reader035.fdocuments.net/reader035/viewer/2022081416/55631c20d8b42a81528b5309/html5/thumbnails/13.jpg)
Zope/Django :过重 Zope ,航母级别的重
Limodou 都没学会 开发人员难掌握 我也准备弃用了…
Django 现在很多开发人员不喜欢 下一个 zope ?
![Page 14: Pyramid框架介绍](https://reader035.fdocuments.net/reader035/viewer/2022081416/55631c20d8b42a81528b5309/html5/thumbnails/14.jpg)
Bob :过轻,这是什么?
![Page 15: Pyramid框架介绍](https://reader035.fdocuments.net/reader035/viewer/2022081416/55631c20d8b42a81528b5309/html5/thumbnails/15.jpg)
Web.py :不算太简单
![Page 16: Pyramid框架介绍](https://reader035.fdocuments.net/reader035/viewer/2022081416/55631c20d8b42a81528b5309/html5/thumbnails/16.jpg)
Flask : Fun
![Page 17: Pyramid框架介绍](https://reader035.fdocuments.net/reader035/viewer/2022081416/55631c20d8b42a81528b5309/html5/thumbnails/17.jpg)
Pyramid :可以简单
https://docs.pylonsproject.org/docs/pyramid_quick_tutorial.html
![Page 18: Pyramid框架介绍](https://reader035.fdocuments.net/reader035/viewer/2022081416/55631c20d8b42a81528b5309/html5/thumbnails/18.jpg)
也可使用 Decorator 来配置
![Page 19: Pyramid框架介绍](https://reader035.fdocuments.net/reader035/viewer/2022081416/55631c20d8b42a81528b5309/html5/thumbnails/19.jpg)
使用 Class 定义 view 也行
![Page 20: Pyramid框架介绍](https://reader035.fdocuments.net/reader035/viewer/2022081416/55631c20d8b42a81528b5309/html5/thumbnails/20.jpg)
不限定模板Mako,
Genshi,
Chameleon,
Jinja2
![Page 21: Pyramid框架介绍](https://reader035.fdocuments.net/reader035/viewer/2022081416/55631c20d8b42a81528b5309/html5/thumbnails/21.jpg)
View 返回 dict 就行
![Page 22: Pyramid框架介绍](https://reader035.fdocuments.net/reader035/viewer/2022081416/55631c20d8b42a81528b5309/html5/thumbnails/22.jpg)
HTTP 缓存
![Page 23: Pyramid框架介绍](https://reader035.fdocuments.net/reader035/viewer/2022081416/55631c20d8b42a81528b5309/html5/thumbnails/23.jpg)
内置的 i18n
pyramid.i18n 基于 zope.i18n 采用 gettext 翻译文件 po/mo
模板也支持 i18n
![Page 24: Pyramid框架介绍](https://reader035.fdocuments.net/reader035/viewer/2022081416/55631c20d8b42a81528b5309/html5/thumbnails/24.jpg)
性能如何?
http://blog.curiasolutions.com/the-great-web-framework-shootout/
![Page 25: Pyramid框架介绍](https://reader035.fdocuments.net/reader035/viewer/2022081416/55631c20d8b42a81528b5309/html5/thumbnails/25.jpg)
Pyramid 核心很小 可在 GAE 上运行 支持 Jython 3M 文档, 1M 测试, 804K 模板, 539K 代码( 5 千行代码) Hello world 的 python 运行行数比较
![Page 26: Pyramid框架介绍](https://reader035.fdocuments.net/reader035/viewer/2022081416/55631c20d8b42a81528b5309/html5/thumbnails/26.jpg)
可以和 gevent 配合使用 参考: https://docs.pylonsproject.org/projects/pyra
mid_cookbook/dev/deployment/gevent.html
![Page 27: Pyramid框架介绍](https://reader035.fdocuments.net/reader035/viewer/2022081416/55631c20d8b42a81528b5309/html5/thumbnails/27.jpg)
全功能框架 helloworld
![Page 28: Pyramid框架介绍](https://reader035.fdocuments.net/reader035/viewer/2022081416/55631c20d8b42a81528b5309/html5/thumbnails/28.jpg)
微框架
![Page 29: Pyramid框架介绍](https://reader035.fdocuments.net/reader035/viewer/2022081416/55631c20d8b42a81528b5309/html5/thumbnails/29.jpg)
php
![Page 30: Pyramid框架介绍](https://reader035.fdocuments.net/reader035/viewer/2022081416/55631c20d8b42a81528b5309/html5/thumbnails/30.jpg)
全功能框架 - 模板
![Page 31: Pyramid框架介绍](https://reader035.fdocuments.net/reader035/viewer/2022081416/55631c20d8b42a81528b5309/html5/thumbnails/31.jpg)
微框架
![Page 32: Pyramid框架介绍](https://reader035.fdocuments.net/reader035/viewer/2022081416/55631c20d8b42a81528b5309/html5/thumbnails/32.jpg)
全功能框架 – 数据库
![Page 33: Pyramid框架介绍](https://reader035.fdocuments.net/reader035/viewer/2022081416/55631c20d8b42a81528b5309/html5/thumbnails/33.jpg)
微框架
![Page 34: Pyramid框架介绍](https://reader035.fdocuments.net/reader035/viewer/2022081416/55631c20d8b42a81528b5309/html5/thumbnails/34.jpg)
但需求是复杂的… Zope2:
很多类,相互继承,相互依赖 Hooks 、 Monkeypatch 基本不可维护
Zope3 / J2EE :组件架构 分离接口和实现 通过 XML 进行装配 难以理解这些模型
![Page 35: Pyramid框架介绍](https://reader035.fdocuments.net/reader035/viewer/2022081416/55631c20d8b42a81528b5309/html5/thumbnails/35.jpg)
Pyramid :分拆复杂问题 WSGI 中间件:
python标准,各个 web框架通用
通过消息来通讯( eviron 公共变量)
Repoze ,通过 wsgi 重新实现 zope
![Page 36: Pyramid框架介绍](https://reader035.fdocuments.net/reader035/viewer/2022081416/55631c20d8b42a81528b5309/html5/thumbnails/36.jpg)
Tween : Pyramid 的中间件
Be - tween 类似WSGI 中间件 Pyramid专用:可操作全局注册表,渲染机制
可控更多:异常处理,事务处理
![Page 37: Pyramid框架介绍](https://reader035.fdocuments.net/reader035/viewer/2022081416/55631c20d8b42a81528b5309/html5/thumbnails/37.jpg)
Tween
pyramid_tm : 事务处理 pyramid_exclog :异常日志 pyramid_debugtoolbar: 从 flask/django偷过来
![Page 38: Pyramid框架介绍](https://reader035.fdocuments.net/reader035/viewer/2022081416/55631c20d8b42a81528b5309/html5/thumbnails/38.jpg)
Debugtoolbar 1
![Page 39: Pyramid框架介绍](https://reader035.fdocuments.net/reader035/viewer/2022081416/55631c20d8b42a81528b5309/html5/thumbnails/39.jpg)
Debugtoolbar 2
![Page 40: Pyramid框架介绍](https://reader035.fdocuments.net/reader035/viewer/2022081416/55631c20d8b42a81528b5309/html5/thumbnails/40.jpg)
很多可选插件 Pyramid_beaker Pyramid_chameleon_genshi Pyramid_handlers Pyramid_jinja2 Pyramid_mailer Pyramid_rpc Pyramid_who pyramid_xmlrpc Pyramid_zcml pyramid_jqm
![Page 41: Pyramid框架介绍](https://reader035.fdocuments.net/reader035/viewer/2022081416/55631c20d8b42a81528b5309/html5/thumbnails/41.jpg)
配置扩展
![Page 42: Pyramid框架介绍](https://reader035.fdocuments.net/reader035/viewer/2022081416/55631c20d8b42a81528b5309/html5/thumbnails/42.jpg)
事件机制 : no hooks! 内核运行的时候抛出事件
ApplicationCreated/NewRequest/ContextFound NewResponse/BeforeRender/
定义事件处理函数
![Page 43: Pyramid框架介绍](https://reader035.fdocuments.net/reader035/viewer/2022081416/55631c20d8b42a81528b5309/html5/thumbnails/43.jpg)
图漫游 Traverse URL地址 : RESTful直接 URL地址直接对象寻址
Model寻址 + View http://host:port/news/12312/@@view.html http://host:port/news/12312/@@edit.html
指定一个 root 对象,使用 __getitem__ 来寻址 无需配置 Route!权限体系 非常灵活,这个是 Plone致胜的法宝特别适合 ZODB
![Page 44: Pyramid框架介绍](https://reader035.fdocuments.net/reader035/viewer/2022081416/55631c20d8b42a81528b5309/html5/thumbnails/44.jpg)
其他特色 测试框架丰富的完整的文档 ZCA / 接口 ZCML
![Page 45: Pyramid框架介绍](https://reader035.fdocuments.net/reader035/viewer/2022081416/55631c20d8b42a81528b5309/html5/thumbnails/45.jpg)
谢谢大家
Questions ?
广告:我们需要靠谱 Pythoner