2

在浏览了许多有用且闪亮的 Python 框架之后,我发现它们都没有接近我的需要或提供的方式超过我的需要。我想自己组装一些东西;可以将其定义为框架,但不能定义为全栈。但是,我在网上找不到 Python 社区认为在应用程序中管理 WSGI 中间件的正确/标准方法。

我不是在寻找框架建议,除非它提供管理 WSGI 中间件的方法示例。我也不是在寻找有关如何让网络服务器与 python 对话的信息——我理解这一点。

相反,我正在寻找关于如何告诉 python 将哪些组件/中间件放入堆栈以及以何种顺序放入堆栈的建议。例如,如果我想使用:
Spawning-->memento-->AuthKit-->(?)-->MyApp
如何让这些组件按正确的顺序排列,以及如何在之前配置一个附加项目(比如 Routes)MyApp

所以; 您能否就管理 Python 应用程序的 WSGI 堆栈中包含的中间件的通用/正确/标准方法提供建议?

编辑
感谢 Michael Dillon 推荐A Do-It-Yourself Framework,这有助于突出我的问题。该文档的中间件部分指出,应该将中间件 A 包装在中间件 B 中,将 B 包装在 C 中,依此类推:

app = ObjectPublisher(Root())
wrapped_app = AuthMiddleware(app)
from paste.evalexception import EvalException
exc_wrapped_app = EvalException(wrapped_app)

这显示了如何以非常简单的方式做到这一点。我了解这是如何工作的,但是在使用许多中间件包时似乎太简单了。

有没有更好的方法来管理这些中间件组件如何添加到堆栈中?也许是从配置文件中读取的常见设计模式?

4

6 回答 6

4

这就是框架的作用。像 Django 这样的一些框架相当严格,而像 Pylons 等其他框架则更容易混合和匹配。

由于您可能迟早会使用 Paste 项目中的一些 WSGI 组件,因此您不妨阅读 Paste people 的这篇关于Do-It-Yourself Framework 的文章。我并不是建议您应该去构建自己的框架,但这篇文章很好地解释了 WSGI 堆栈的工作原理以及事物如何结合在一起。

于 2009-10-27T20:50:39.870 回答
1

我不得不说 Apache/mod_wsgi 可能是我使用过的最“易于管理”的设置。

nginx/fcgi 是最快的,但是有点头疼。

于 2009-10-27T20:12:19.327 回答
1

你认为你需要什么中间件?您可能根本不需要包含任何类似 WSGI 的“中间件”组件。您可以完美地将独立库的松散“伪框架”组合在一起,而根本不需要将应用程序“包装”在中间件中。

(我个人使用单独的表单阅读库、数据访问层和模板引擎,它们都不知道彼此或需要开始摆弄 WSGI environ。)

于 2009-10-27T20:25:25.510 回答
0

我的建议是阅读关于 WSGI 的PEP,特别是关于中间件的部分。如果您对其中包含“标准”和“WSGI”字样的任何内容有疑问,那么答案要么就在那里,要么您问错了问题。

于 2009-10-27T20:58:35.600 回答
0

如果您喜欢前面提到的 Do-It-Yourself-Framework 教程,但又想在配置文件中管理这些东西,那么Paste Deploy将是显而易见的答案。(在教程中提到了,但在最后一段中只是非常简短地提到)。

顺便说一句,这就是 Pylons 框架所使用的(以及基于 Pylons 构建的 Turbogears 2)。

于 2009-10-27T22:30:20.477 回答
0

“使用多个中间件包似乎太简单了。”

多大的数?

您不会与数百或数千人一起工作。

这将是(a)一个小数字(不到一打)和(b)“正确”的顺序并不神奇。

每个中间件都有非常非常具体的工作和非常具体的要求。

它比你想象的要少得多。

于 2009-10-28T01:39:18.220 回答