wsgi 介绍

来源:互联网 发布:怎么把淘宝店做起来 编辑:程序博客网 时间:2024/05/29 12:40

WSGI 干嘛的?

WSGI 实际上是一个接口规范,完整定义参考:PEP 333 — Python Web Server Gateway Interface v1.0。

引用原文:

This document specifies a proposed standard interface between web servers and Python web applications or frameworks, to promote web application portability across a variety of web servers.

简单来说,WSGI 定义了一个 Python 应用程序(或框架)与 Web Server 之间的接口,让 Python 应用可以在不同的 Web Server 上跑起来。

PHP 开发者的疑惑

对于 PHP 开发者来说,WSGI 这样的东西有点难以理解。因为 PHP 里面,配置好 Web Server,直接就可以执行 PHP 脚本了。但 PHP 之所以可以这么简单,是因为 PHP 本身就是专为 Web 应用设计的语言,所以许多额外的基础工作都由 PHP 内核自动处理了。

假设浏览器发起一个 POST 请求到服务器,服务器上的 Web Server 软件(例如 Apache)接收到这个请求后,会进行初步的处理,然后将请求内容(一个数据流)传递给 PHP 内核。PHP 内核会对请求内容进行解析,提取出其中包含的 URL 参数、POST 数据以及 Cookie 等。最后 PHP 内核把解析结果存入 $_GET、$_POST 等变量,再调用我们的 .php 脚本。

这样一来,我们在 .php 脚本中就可以很轻松的获得客户端输入数据。而 .php 脚本的输出则会被 PHP 内核包装为符合 Web Server 要求的返回结果。

而 Python 则是通用脚本语言,PHP 内核完成的这些事情必须要 Python 开发者自己写代码来解决。由此导致的一个后果就是针对不同的 Web Server 软件,开发者都要去做一个解析请求和包装返回结果的模块。显然,这里存在大量的重复性劳动。

WSGI 带来的好处

WSGI 的目的就是统一接口,避免重复劳动。WSGI 定义了一个接口规范,大家只需要针对每一种 Web Server 写一个实现,那么兼容 WSGI 的 Python 程序就可以运行在任何 Web Server 上。也就是说 WSGI 在 Web Server 软件和 Python 应用(或框架)之间建立了一个中间层,完成了 PHP 内核完成的一些基础工作。

目前大多数 Python Web 框架都已经和 WSGI 兼容了,而主流的 Web Server 软件都提供了 WSGI 实现。

由此带来的好处就是各种 Python Web 框架的基础架构都得到了简化,并且兼容 WSGI 的 Python 程序可以很容易的作为中间件执行。


原文:http://dualface.qeeplay.com/?p=104
原创粉丝点击