Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 关于设置/管理WSGI堆栈的建议?_Python_Wsgi - Fatal编程技术网

Python 关于设置/管理WSGI堆栈的建议?

Python 关于设置/管理WSGI堆栈的建议?,python,wsgi,Python,Wsgi,在浏览了许多有用且闪亮的Python框架之后,我发现它们中没有一个能够接近我所需要的,或者提供了比我所需要的更多的方法。我希望自己能把一些东西组合起来;可以将其定义为框架,但不能定义为完整堆栈。然而,我无法在线找到Python社区认为在应用程序中管理WSGI中间件的正确/标准方法 我不是在寻找框架建议,除非它提供了一个管理WSGI中间件的方法示例。我也不是在寻找关于如何让Web服务器与python对话的信息——我理解这一点 相反,我正在寻找关于如何告诉python将哪些组件/中间件放入堆栈中以及

在浏览了许多有用且闪亮的Python框架之后,我发现它们中没有一个能够接近我所需要的,或者提供了比我所需要的更多的方法。我希望自己能把一些东西组合起来;可以将其定义为框架,但不能定义为完整堆栈。然而,我无法在线找到Python社区认为在应用程序中管理WSGI中间件的正确/标准方法

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

相反,我正在寻找关于如何告诉python将哪些组件/中间件放入堆栈中以及以何种顺序放入的建议。例如,如果我想使用:
生成-->memento-->AuthKit-->(?)-->MyApp

MyApp
之前,我如何将这些组件按正确的顺序排列,以及如何配置附加项(比如路由)

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

编辑
感谢Michael Dillon的推荐,这有助于突出我的问题。该文档的结尾指出,应该将中间件A封装在中间件B中,将中间件B封装在中间件C中,以此类推:

app = ObjectPublisher(Root())
wrapped_app = AuthMiddleware(app)
from paste.evalexception import EvalException
exc_wrapped_app = EvalException(wrapped_app)
这显示了如何以一种非常简单的方式进行。我理解这是如何工作的,但是当使用许多中间件包时,它似乎太简单了


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

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


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

您认为需要什么中间件?您可能根本不需要包含任何WSGI“中间件”之类的组件。您完全可以构建一个松散的独立库“伪框架”,而无需将应用程序“包装”到中间件中


(就我个人而言,我使用一个单独的表单阅读库、数据访问层和模板引擎,它们彼此都不了解,也不需要开始摆弄WSGI
环境)

这就是框架所做的。有些框架,如Django,相当严格,而另一些框架,如挂架,则更容易混合和匹配


由于您迟早可能会使用粘贴项目中的一些WSGI组件,因此您不妨从粘贴人员那里阅读这篇关于一个应用程序的文章。我不是建议您去构建自己的框架,而是建议您在本文中很好地解释WSGI堆栈的工作原理以及它们是如何协同工作的。

我的建议是阅读关于WSGI的部分,特别是关于的部分。如果你有一个关于“标准”和“WSGI”的问题,答案要么在那里,要么你问错了问题。

如果你喜欢前面提到的“自己动手”框架教程,但你想在配置文件中管理这些东西,这将是显而易见的答案。(本教程中提到了这一点,但在最后一段中仅作了简要介绍)

顺便说一句,这就是Pylons框架所使用的(以及Turbogears 2,它也构建在Pylons之上)。

“当使用许多中间件包时,它似乎太简单了。”

这个数字有多大

你不会和成百上千的人一起工作

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

每一个中间件都有一个非常非常具体的任务,以及对它之前必须完成的工作的非常具体的要求


这比你想象的要简单得多。

你的问题太宽泛了。“管理”是什么意思?你是在询问有关的信息吗?进一步澄清(我希望!这是一个难以表述的问题)。谢谢您是否在询问WSGI应用程序是如何构造的?你是在问吗?我对Nginx+上游比较满意,所以我会坚持下去。无论如何,谢谢,但我不确定这是否回答了我的问题。我已经进一步澄清了。哦,我现在明白你的意思了。我不太确定,因为这是我的业余爱好,但从我所知道的情况来看,如果这是一个依赖性问题,我猜python本身会为您处理排序。现在,如果你试图以特定的顺序强制加载特定的模块,我不知道。但这是一个好问题。如果这真的是一个好问题,别忘了投票不,不是一个很大的数字,但是如果我打算重新使用这个堆栈,让它可以很容易地定制将会很方便。我想我只是对在配置文件中设置这类内容的PHP框架感到困惑。从长远来看,这非常非常简单。你所展示的是完美的。这不太简单。这件事会圆满解决的。你不能扩展到很多包。每个人都有独特的、不同的责任,因此没有神秘感。