什么是WSGI

WSGI 是一个规范,全称 Python Web Server Gateway Interface,指定了 Web Server 和 应用或框架之间的标准接口,定义在 PEP333「链接」。

一个 WSGI 程序就是具有下列定义的函数:

def application(environ, start_response)

这里有两个入参:

WSGI 程序的返回值是一个可遍历对象,遍历的每个项目都是 HTTP 回应报文内容的数据块(byte string)。

最简单的WSGI程序可写为:

def application(environ, start_response):
    start_response("200 OK", [("Content-type", "text/plain")])
    return ["Hello World!",]

environ 字典包含了诸多信息,HTTP 请求的所有头部信息都可以通过 HTTP_* 变量访问。有些 WSGI 特定的变量命名为 wsgi.*。

而 start_response 是具有下面定义的函数:

start_response(status, response_headers, exc_info=None)

其中有三个入参:

response_headers = [
    ("Content-type", "text/html"),
    ("Content-length", str(len(body))),]
start_response("200 OK", response_headers)
return [body,]

Python标准库里提供的参考实现可作为简单测试使用:

if __name__ == '__main__':
    from wsgiref.simple_server import make_server
    server = make_server('localhost', 8080, application)
    server.serve_forever()

因为 WSGI 规范非常简单,只是指定了可调用对象的原型定义,所以很容易实现调用其它 WSGI 实现的 WSGI 程序从而绕过去,这些程序称为中间件,中间件可以串连起来。

虽然 WSGI 设计上非常简单,但是一般不会直接基于 WSGI 开发,而是使用比较成熟的 Web 框架,像 Flask,Pecan 都是比较流行的框架。这些框架除了支持 WSGI 之外,还提供了丰富的如 URL 路由等功能。

展开阅读全文

页面更新:2024-04-26

标签:报文   遍历   头部   框架   定义   对象   状态   简单   程序   数据

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top