【问题标题】:How to adding middleware to Appengine's webapp framework?如何在 Appengine 的 webapp 框架中添加中间件?
【发布时间】:2008-12-09 08:09:07
【问题描述】:

我正在使用 appengine webapp 框架 (link)。是否可以添加 Django 中间件?我找不到任何例子。我目前正在尝试让 FirePython 中间件工作 (link)。

【问题讨论】:

    标签: python django google-app-engine middleware django-middleware


    【解决方案1】:

    这很简单:您照常创建 WSGI 应用程序,然后在执行之前将该应用程序包装在您的 WSGI 中间件中。

    请参阅来自博客的this code,了解如何将 firepython 添加为中间件。

    【讨论】:

    • 这是一个好的开始,但我正在寻找一种更通用的方法来添加任何 django 中间件。我会看看 FirePythonWSGI 是如何工作的
    • 添加WSGI中间件的通用方式。就 Django 的“中间件”概念而言,您需要查阅 Django 手册。
    【解决方案2】:

    GAE webapp 框架不会一对一地映射到 Django 框架。如果不自己实现某种适配器,就很难做你想做的事,我不知道有任何第三方处理程序适配器可以做到这一点。

    也就是说,我通常使用 app-engine-patch,因此我可以将最新的 1.0.2 Django 版本与 AppEngine 一起使用,然后您可以在 setup.py 文件中以正常方式包含 Django 中间件。如果需要,您可以查看 app-engine-patch 的适配器以了解它们是如何做到的,然后将其作为框架开始。

    【讨论】:

      【解决方案3】:

      Django 理解的“中间件”是一种请求/响应处理器,与 WSGI 所说的“中间件”完全不同。想一想:类 django 的中间件将根据 Beaker(WSGI 中间件)在 environ['beaker.session'] 中放入的内容添加 session 属性到请求对象。虽然将 WSGI 中间件添加到堆栈应该很简单(您已经在 main.py 中处理 WSGI 级别),添加请求/响应处理器取决于如何从 WSGI 抽象请求和响应。

      Werkzeug's wiki 及其contrib modules 之一中描述了如何使用Werkzeug(这是基本的WSGI 工具集)来完成。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-12-24
        • 2023-03-12
        • 2020-07-31
        • 1970-01-01
        • 2022-10-20
        • 2013-04-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多