`
shake863
  • 浏览: 661551 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

pylons 中 wsgiapp 和 wsgicontroller 的关系

 
阅读更多

 

pylons 看了好久了,喜欢的他精简封装,就想它自己的名字一样,“ 架线塔 ” 松散话。说是框架,其实也不是框架。

 

只是把一些模块结合起来,随着对pylons的了解的越来越深入,越着迷。其中好些信息看文档是不深入的,一些疑惑

 

还是要看pylons的源码的(别怕,pylons的源码核心没多少),说回来,python的web开发不都是围绕wsgi 走的吗?

 

本质就不复杂,有些框架复杂,是外围太庞大了,把本质掩盖在里面。

 

pylons 的核心就是 “ 垂直的 Middleware + 横向的 Controller ”

 

Middleware  就像是千层饼 外部的 “ 层饼 ”

Controller    就是里面的 “ 馅 ”

 

有 “ 肉馅千层饼” , “豆沙千层饼” ...... 

 

Middleware 在系统级别上 垂直复用。 Controller 在应用逻辑级别上 平行处理

 

 

一些关键点:

 

 

1、程序的入口:

 

$app\config\middleware.py 中的 

 

 

make_app(global_conf, full_stack=True, static_files=True, **app_conf):

 

 

 global_conf 等一系列参数,都是通过解析配置文件得到的。

 

   

  config = load_environment(global_conf, app_conf) 中 把 route 的mapper 也包含在里面了。

  这个config 可以说是运行环境了。

   

 接下来关键点

 

2、 app诞生

 

 

 app = PylonsApp(config=config)
 

 

    app 被注入运行环境,各种参数和处理逻辑。但是这个时候也只是 “被注入”了而已,程序还没运行。

 

    然后一系列的链式 Middleware 一层一层的引用封装。

 

    这个时候 Middleware  垂直体系已经建立。wsgiapp 完成。但是还没有run。

 

 

3、run

 

    所有的python框架再怎么变化,最后都要有这么一个轮回,app毕竟只是app,它要在服务容器中运行。

 

    当然,这外部容器五花八门,这里不是重点,不多讲,wsgi app的命运是要被外部 调用的。

 

    app 的  __call__(self, environ, start_response) 方法被调用。

 

    刚才说,app 外面包了很多层的 Middleware ,所以这个按 “ 先进后出 ” 的方式 一层一层调用。

 

   Middleware 调用到最后,到最底层  PylonsApp 里面的  __call__,又一个关键点

 

 

controller = self.resolve(environ, start_response)

 

    Controller 诞生。根据信息,找到 调用的 Controller

    下一步

 

response = self.dispatch(controller, environ, start_response) 

 

    调用 Controller 产生 response ,

 

     然后再一层一层 由外部的 Middleware 再对 response 处理。

 

 

 

所以,这里 Controller 在整个体系的只占很小一部分,也是pylons 让用户去写逻辑的一部分。

 

所以各种应用,各种形式的 只要满足 wsgi 都可以在pylons 上跑,因为pylons 已经把逻辑抽离出来了。

 

对 Pyamf 的困惑也游刃而解,Pyamf 对 pylons 的支持 只不过 按照自己的需要 定制了一个 自己的 Controller

而已, pylons 的众多特性已经在使用当中。

 

感受到此结束,enjoy !!

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    Python库 | Pylons-0.8.2-py2.3.egg

    2. **轻量级**:Pylons是一个轻量级框架,它不包含太多内置功能,而是依赖于其他组件,如Paste作为HTTP服务器和WSGI中间件容器,以及SQLAlchemy或SQLObject等ORM工具。 3. **路由系统**:Pylons采用先进的URL路由...

    Python Web框架Pylons中使用MongoDB的例子

    在本例子中,我们将探讨如何在Pylons框架中集成非关系型数据库MongoDB。 MongoDB是一种流行的NoSQL数据库,以其高效、灵活的数据模型和强大的文档存储能力而闻名。在Pylons中集成MongoDB,我们可以利用Ming ORM...

    [James_Gardner]_The_Definitive_Guide_to_Pylons(z-lib.org).rar

    In this book, cofounder and lead developer James Gardner brings you a comprehensive introduction to Pylons, the web framework that uses the best of Ruby, Python, and Perl and the emerging WSGI ...

    借着今天的大好日子,挖一个Pylons教程的坑

    标题中的“Pylons教程”指的是一个关于Python Web框架Pylons的学习资源,可能是博主计划发布的一系列文章或教程。Pylons是一个轻量级、高性能的Web框架,它基于Python语言,旨在提供灵活的MVC(模型-视图-控制器)...

    Apress.the.Definitive.Guide.to.Pylons.Dec.2008

    - **事务管理**:了解如何在Pylons应用中管理数据库事务,保证数据的一致性和完整性。 ##### 表单处理与验证 - **表单创建**:学习如何创建HTML表单并将其与Pylons控制器关联起来。 - **数据验证**:实施表单数据的...

    Gardner -- The Definitive Guide to Pylons -- 2008.pdf

    - **路由规则**:Pylons通过配置文件中的路由规则将URL映射到相应的控制器方法。 - **动态URL**:支持基于变量的动态URL,使得URL更加灵活且易于维护。 #### 5. **模板引擎** - **Mako**:默认使用Mako作为模板...

    Pyramid英文文档.pdf

    - Pyramid 作为 Pylons 的升级版,继承了 Pylons 的许多优秀特性,并在此基础上做了进一步的优化和发展。 - Pylons 项目本身也是一套完整的 Web 开发平台,包含了多个子项目,如 TurboGears 和 WebOb 等。 - 通过...

    PyPI 官网下载 | Pylons-0.8.2-py2.3.egg

    资源来自pypi官网。 资源全名:Pylons-0.8.2-py2.3.egg

    Gardner -- The Definitive Guide to Pylons -- 2008 -- code.7z

    Gardner -- The Definitive Guide to Pylons -- 2008 -- code.7z

    pylons:Pylons框架,社区在Pylons项目的指导下得到了维护。 与repoze.bfg合并用于金字塔框架

    塔架 Pylons是一个快速的Web应用程序开发框架。 笔记定向塔已与repoze.bfg合并,并且现在处于仅维护模式。 强烈建议新项目从新的合并的Web框架。安装。 如果要从源代码安装,可以运行以下命令: $ python setup.py ...

    Python的应用场景和优势分析.docx

    Python是一种强大而灵活的高级编程语言,其特点在于简洁的语法和广泛的库支持,使其在多个领域中展现出显著的优势和广泛应用。以下将深入探讨Python在数据科学、机器学习、网络应用开发以及操作系统管理和自动化等...

    塔架pylons_VR游戏开发_天空盒子_Skybox_高清_16K_EXR

    可用于UnityVR开发,3D游戏开发,高清天空盒子Skybox素材,游戏环境背景素材,无水印。 让你身临其境的天空盒子,各类题材丰富,都是辛苦搜罗所得的高清exr格式...4-用刚创建的Material代替项目中原本的系统默认Skybox

    Python库 | minitage.paste-1.3.162.zip

    总的来说,minitage.paste-1.3.162是Python Web开发中不可或缺的工具,它通过强大的配置能力和模块化设计,为构建和管理复杂的WSGI应用提供了便利。对于任何希望利用Python进行Web开发的开发者来说,理解和掌握这个...

    Uliweb快速易用的PythonWebFramework.pptx

    1. **MVT型框架**:类似Web2py的模板自动关联,支持Middleware和WSGI-Middleware。 2. **完全的APP重用**:通过APP级别的配置文件(settings.ini)实现,包含静态文件和模板定位。 3. **Hook系统**:用于扩展和定制...

    SQLAlchemy_Tutorial

    - **1.4 SQLAlchemy + URL Dispatch Wiki 教程**:这是 Pylons 文档的一部分,主要关注 SQLAlchemy 在 Web 开发中的应用。 2. **再版教程**: - **2.2 入门教程**:此部分介绍了 Python 中传统的数据库编程方式与...

    linesman:适用于Python WSGI应用程序的智能分析

    我团队工作的故事之一是研究现有的Python分析工具,这些工具可用于我们的一些新Web堆栈(全部在Pylons中)。 我看了几个repoze.profile , kea.profile ,甚至dozer (仍然是0.2alpha)-但找不到适合我们用例的任何...

Global site tag (gtag.js) - Google Analytics