为了帮助我进一步理解WSGI,我正在寻找一个解释应用程序流程的图表,从webserver(例如apache)到大量中间件到“代码”(如{{1} }位)。
我已经从wsgi.org上阅读了有关WSGI的各种文章,但它仍然没有为我“点击”,至于图表谷歌除了this之外没有为django带来任何有用的东西,虽然有趣,希望用户了解中间件链接的方式等。
由于“一张图片胜过千言万语”,有没有比这更低/更简单的图表?
答案 0 :(得分:17)
我一直在寻找一个解释WSGI流程的图表。这就是我找到这个话题时非常高兴的原因。我非常期待看到Ian Bicking在编写Python时有多好。然而,通过观察伊恩的花式管(图?),我几乎没有获得任何结果。这就是为什么我决定自己画一个。我希望它能帮助人们了解WSGI流程的工作原理。只要您有如何使其更好的建议我就可以修改它。它是使用LUCIDCHART webapp创建的。您可以找到here的原始图表和高质量的PNG here。
答案 1 :(得分:9)
我喜欢来自Ian Bicking the diagram的WSGI - A Series of Tubes。
答案 2 :(得分: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"]
将您的网络服务器链接到您的wsgi应用程序特定于您认为的网络服务器以及有关网络服务器如何到达环境字典的信息以及您的代码调用的回调是您可能不需要的网络服务器魔力关心。只要您遵守协议,网络服务器就不需要关心您如何到达构成您的应用程序响应的输出列表。
Paste文档给了我很多帮助。你可能会发现它很有用。顺便说一句,粘贴是一堆有用的东西,可以帮助你利用WSGI。文档非常适合理解如何使用WSGI和扩展粘贴。
我知道你要求图表抱歉。 :(