寻找解释WSGI的图示
为了更好地理解WSGI,我在寻找一个图示,能够解释一个应用程序的流程,从网络服务器(比如Apache)经过几个中间件,最后到达“代码”(比如print "hello world"
这一部分)。
我读过一些关于WSGI的文章,来自wsgi.org,但还是觉得不太明白。而且在谷歌上找图示时,除了这个关于Django的图,其他的都没什么用。这个图虽然有趣,但它假设用户已经理解了中间件是如何连接的等等。
既然“一个图片胜过千言万语”,有没有更简单、更基础的图示可以参考呢?
3 个回答
我不知道我能否给你想要的答案,但你链接的那个图不仅仅是关于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"]
把你的网页服务器和wsgi应用连接起来的方式是和你的网页服务器有关的。我觉得关于网页服务器如何生成environ字典以及你代码中需要调用的回调函数的细节是网页服务器的“魔法”,你可能不需要太关注。只要你遵循协议,网页服务器就不需要关心你是如何得到你的响应输出列表的。
Paste的文档对我帮助很大。你可能也会觉得有用。顺便说一下,Paste是一系列有用的工具,帮助你使用WSGI。它的文档对于理解如何使用WSGI以及Paste都非常好。
我知道你是想要一个图,抱歉。 :(
我喜欢Ian Bicking的WSGI - 一系列管道中的这个图。
因为看了Ian的那些复杂的图我没学到什么,所以我决定自己画一个图。我希望这个图能帮助大家理解WSGI的工作流程。如果你有任何建议让我改进这个图,我很乐意去修改。这个图是用LUCIDCHART这个网页应用制作的。你可以在这里找到原始图,高清PNG版本在这里。