寻找一张图来解释WSGI。

16
为了更好地理解WSGI,我正在寻找一张图表,它可以解释应用程序的流程,从Web服务器(例如Apache)通过多个中间件到达“代码”(例如print "hello world"部分)。
我已经阅读了来自wsgi.org的各种关于WSGI的文章,但是对我来说仍然不太理解。至于图表,谷歌没有提供任何有用的信息,只有这个适用于django的链接,虽然很有趣,但是需要用户理解如何链接中间件等。
因为“一图胜千言”,是否有比这个更简单易懂的图表呢?

你看过 http://www.python.org/dev/peps/pep-0333/ 吗?这个够简单吗?你看过 http://docs.python.org/library/wsgiref.html 吗?这个够简单吗?你看过 http://werkzeug.pocoo.org/ 吗?这个够简单吗? - S.Lott
3
@S.Lott:抱歉,我在哪里说过我要寻找WSGI的长篇描述? - Phillip B Oldham
@Phillip Oldham:你是说WSGI描述中的示例应用程序没有被描述得足够清楚吗?你更倾向于哪个来源?既然有示例代码,为什么还要关注图表呢?示例代码有什么问题吗? - S.Lott
4
有时候示例代码并不足以说明基本概念,这就是为什么白板、UML、信息图等非常有用的原因。一些简单的框和箭头往往比经过深思熟虑并书写良好的描述更能有效地传达信息。 - Phillip B Oldham
2
@S.Lott,你不理解“寻找解释WSGI的图表”的哪一部分? - Piotr Dobrogost
@PiotrDobrogost:“简单的图表”和“解释WSGI”实际上都很令人困惑。由于WSGI协议已经很简单了,要求一个简单的图表并没有多大意义。因此,描述WSGI中哪些部分令人困惑、复杂或不清晰会有所帮助。仅仅要求“简单”是没有帮助的。描述具体的困惑点才是有用的。这些话很模糊。我不知道提问者是谁。我不知道他们知道什么,不知道什么。我不敢猜测。我认为询问更好。也许我在要求澄清方面是错的? - S.Lott
3个回答

20

我在查看 Ian 的炫酷管道时没有收获,于是决定自己画一个图表。我希望能帮助某些人理解 WSGI 流程的工作原理。只要您有建议如何使其更好,我愿意对其进行修改。它是使用 LUCIDCHART 网络应用程序创建的。您可以在这里找到原始图表,高质量的 PNG 文件在这里

WSGI 流程


9

太棒了!只需要一些尖头箭头,一些彩色的方框和“理解”插槽即可。谢谢! - Phillip B Oldham
而且蜡笔的风格很清新 :) - lutz
哈哈,那个演示文稿非常好。我不知道它的存在。顺便说一下,这个演示文稿的作者创建了 Paste,我认为它是学习 WSGI 最好的资源之一。 - Tom Willis
我看了Ian的花哨管子(图表?)后并没有获得任何收获,于是决定创建自己的管子。你可以在我的回答中看到它。 - Piotr Dobrogost
你能在这里提供答案中的图片吗? 目前提供的链接无法访问。 - WebComer

7
我不确定我能否提供你所寻求的答案,但你链接的图表展示了更多内容,而非仅限于WSGI。在图表第二行结束的是WSGI层,之后就是应用程序特定的内容。
WSGI更像是一个接口定义或契约,其本质是提供一个函数,该函数需要使用字典(environ)表示当前请求的内容,并在准备好响应时调用一个函数(start_response)。
你调用的start_response方法需要一个HTTP状态码('200 OK')和HTTP头的列表([('content-type','text/html')])。
def say_hello(envron={},start_response):
    start_response('200 OK', [('content-type', 'text/html')])
    return ["Hello from WSGI"]

链接您的Web服务器到WSGI应用程序是特定于您的Web服务器的,我认为关于Web服务器如何获得环境字典和您的代码调用的回调函数的信息是Web服务器的魔法,您可能不需要担心。只要遵守协议,Web服务器就不需要关心您如何生成响应列表以构成来自应用程序的响应。 Paste文档对我帮助很大,您可能也会发现它有用。顺便说一句,Paste是一堆有用的东西,可以帮助您利用WSGI。文档非常好,可以理解如何使用WSGI,进而理解Paste。
很抱歉,我知道您要求一个图表。:(

粘贴(WSGI)文档的链接非常有帮助。帮助我理解了WSGI。+1 - X10

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接