WSGI 代表 Web 服务器网关接口,(大部分)由 PEP 333 在http://www.python.org/dev/peps/pep-0333/定义。
Python 社区努力为 Web 服务器建立与 Python 应用程序对话的标准机制。
理论上,任何 wsgi 兼容的服务器(或现有 Web 服务器的扩展)都应该能够加载和运行任何 wsgi 兼容的应用程序。
werkzeug是一个 Web 应用程序框架,可以在兼容的 WSGI 服务器下运行,例如 Apache+mod_wsgi。它还包含一个可用于开发的内置开发服务器。
WSGI 一开始可能会让人很困惑,但实际上它非常简单。WSGI 规范要求您的 python 应用程序执行以下操作:
- 定义一个名为
application
- 说 callable 应该接受 2 个参数: (
environ
, start_response
)
environ
是环境变量的字典
start_response
是一个可调用对象,需要调用才能开始响应
一旦application
被调用,它就会处理请求,构建输出,然后:
- 来电
start_response('200 OK', Headers)
return [content]
一个简单的 WSGI 应用程序可能如下所示:
def application(environ, start_response):
status = '200 OK'
output = 'Hello World!'
response_headers = [('Content-type', 'text/plain'),
('Content-Length', str(len(output)))]
start_response(status, response_headers)
return [output]
强烈建议您使用现有的 WSGI 框架,因为在解析 HTTP 请求、处理文件上传、编码字符等方面涉及很多细节......
看看 Bottle、Flask、werkzeug、AppStruct 等...