Contents
  1. 1. WSGI教程

前言
在学习python wsgi规范的时候读到了一篇介绍的很好的入门教程。内容不长,尝试将其翻译,希望对需要的人有一些帮助。
原文地址:Web Python
翻译:YongLi1992


WSGI教程

WSGI[^1]不是服务器,不是python模块,不是框架或API或任何一种软件。WSGI是一套服务器和应用程序共同遵守以供通讯的接口规范。服务器端和应用程序端的接口都在WSGI被规范定义了。WSGI的唯一官方描述仅以PEP 3333提案为准。如果一个应用程序(或框架,工具包)是遵从WSGI规范编写的,则它可以运行于同样遵从WSGI规范的任何服务器之上。

WSGI应用(遵守它的程序)是可以堆叠的(stacked)。在堆叠时处于中间位置的成为中间件,必须同时遵循WSIG规范的应用端和服务端的两个接口。在其上层的应用看来,中间件等同于服务器。在其下层的服务器(或其它低层应用)看来,中间件等同于应用。

一个遵循WSGI规范的服务器做的全部工作可以理解为从客户端接收一个请求,传递给应用程序,然后将应用返回的响应发送回客户端。其抽象的工作逻辑就是这么简单,而所有复杂的细节工作应交由接口另一侧的应用程序或是中间件去完成。

对于仅仅是使用框架或者工具包而言,学习WSGI规范不是必须的。但是,除非应用程序已经完全集成在框架内,为了使用中间件还是应有一些关于如何堆叠不同层次的基本知识。

Python 2.5及之后的版本都内置了一个WSGI服务器,在这个教程中我们将使用它。2.4及之前的版本也可以手动安装它。而除了学习以外的任何实用场景,我都推荐使用Apache服务器配合以mod_wsgi模块。

该教程的所有代码都是较为底层的,并且唯一的目的只是以边写边运行的教学方式来展示WSGI规范。它不是为真实使用情景写的。对于生产代码,建议直接使用工具包,框架和中间件。

[^1]: Web Server Gateway Interface:Web服务器网关接口

Contents
  1. 1. WSGI教程