fbpx
维基百科

Web服务器网关接口

Web服务器网关接口Python Web Server Gateway Interface,缩写为WSGI)是为Python语言定义的Web服务器Web应用程序框架之间的一种简单而通用的接口。自从WSGI被开发出来以后,许多其它语言中也出现了类似接口。

发展背景 编辑

以前,如何选择合适的Web应用程序框架成为困扰Python初学者的一个问题,这是因为,一般而言,Web应用框架的选择将限制可用的Web服务器的选择,反之亦然。那时的Python应用程序通常是为CGIFastCGImod_python英语mod_python中的一个而设计,甚至是为特定Web服务器的自定义的API接口而设计的。

WSGI[1] (有时发音作'wiz-gee')是作为Web服务器与Web应用程序或应用框架之间的一种低级别的接口,以提升可移植Web应用开发的共同点。WSGI是基于现存的CGI标准而设计的。

规范概览 编辑

WSGI區分為兩個部份:一為「伺服器」或「网关」,另一為「應用程序」或「應用框架」。在處理一個WSGI請求時,伺服器會為應用程序提供環境資訊及一個回呼函數(Callback Function)。當應用程序完成處理請求後,透過前述的回呼函數,將結果回傳給伺服器。

所谓的“WSGI 中介軟體”同时实现了API的两方,因此可以在WSGI服务器和WSGI应用之间起调解作用:从Web服务器的角度来说,中介軟體扮演应用程序,而从应用程序的角度来说,中介軟體扮演服务器。“中介軟體”组件可以执行以下功能:

  • 重写环境变量后,根据目标URL,将请求消息路由到不同的应用对象。
  • 允许在一个进程中同时运行多个应用程序或应用框架。
  • 负载均衡和远程处理,通过在网络上转发请求和响应消息。
  • 进行内容后处理,例如应用XSLT样式表。

示例程序 编辑

Python语言写的一个符合WSGI的“Hello World”应用程序如下所示:

def app(environ, start_response): start_response('200 OK', [('Content-Type', 'text/plain')]) yield b"Hello world!\n" 

其中

  • 第一行定义了一个名为 app 的 callable[註 1],接受两个参数,environ 和 start_response,environ 是一个包含了 CGI 中的环境变量的字典。
  • 第二行调用了start_response,状态指定为“200 OK”,消息头指定为内容类型是“text/plain”。start_response 也是一个 callable,接受两个必须的参数,status(HTTP 状态)和 response_headers(响应消息的头)。
  • 第三行将响应消息的消息体返回。

调用一个应用程序的示例 编辑

调用一个程序并获取它的应答消息的例子如下所示:

def call_application(app, environ): body = [] status_headers = [None, None] def start_response(status, headers): status_headers[:] = [status, headers] return body.append app_iter = app(environ, start_response) try: for item in app_iter: body.append(item) finally: if hasattr(app_iter, 'close'): app_iter.close() return status_headers[0], status_headers[1], ''.join(body) status, headers, body = call_application(app, {...environ...}) 

WSGI兼容的应用和框架 编辑

支持WSGI的Web应用框架有很多:

影响 编辑

注释 编辑

  1. ^ 在规范中,使用术语“callable”表示一个函数,方法,类或带有__call__ method实例。

参考文献 编辑

  1. ^ PEP 3333 (页面存档备份,存于互联网档案馆), Python Web Server Gateway Interface v1.0
  2. ^ Bobo light-weight framework for creating WSGI web applications. [2021-02-09]. (原始内容于2011-12-01). 
  3. ^ Bottle Micro-Framework. [2021-02-09]. (原始内容存档于2014-06-04). 
  4. ^ . [2011-03-18]. (原始内容存档于2021-04-01). 
  5. ^ . [2013-09-23]. (原始内容存档于2012-10-08). 
  6. ^ . [2013-09-23]. (原始内容存档于2016-06-01). 
  7. ^ . [2013-09-23]. (原始内容存档于2021-12-10). 
  8. ^ web.py official site. [2012-08-28]. (原始内容于2011-10-26). 
  9. ^ . [2011-03-18]. (原始内容存档于2013-01-26). 
  10. ^ . [2013-09-23]. (原始内容存档于2021-04-01). 
  11. ^ [1] (页面存档备份,存于互联网档案馆) WSGI
  12. ^ 存档副本. [2011-03-18]. (原始内容存档于2007-03-15).  Rack接口
  13. ^ [2] (页面存档备份,存于互联网档案馆) WSAPI接口
  14. ^ [3] (页面存档备份,存于互联网档案馆) JSGI接口
  15. ^ [4] (页面存档备份,存于互联网档案馆) PSGI接口
  16. ^ [5] (页面存档备份,存于互联网档案馆) Hack接口

外部連結 编辑

  • PEP 333 -- Python Web Server Gateway Interface v1.0 (页面存档备份,存于互联网档案馆
  • PEP 3333 -- Python Web Server Gateway Interface v1.0.1 (页面存档备份,存于互联网档案馆
  • 关于WSGI的Wiki网站 (页面存档备份,存于互联网档案馆(英文)
  • WSGI教程 (页面存档备份,存于互联网档案馆(英文)
  • Hoxide · 2006-03-03 · WSGI简介
  • 啄木鸟关于wsgi的介绍 (页面存档备份,存于互联网档案馆

web服务器网关接口, python, server, gateway, interface, 缩写为wsgi, 是为python语言定义的web服务器和web应用程序或框架之间的一种简单而通用的接口, 自从wsgi被开发出来以后, 许多其它语言中也出现了类似接口, 目录, 发展背景, 规范概览, 示例程序, 调用一个应用程序的示例, wsgi兼容的应用和框架, 影响, 注释, 参考文献, 外部連結发展背景, 编辑以前, 如何选择合适的web应用程序框架成为困扰python初学者的一个问题, 这是因为, 一般而言,. Web服务器网关接口 Python Web Server Gateway Interface 缩写为WSGI 是为Python语言定义的Web服务器和Web应用程序或框架之间的一种简单而通用的接口 自从WSGI被开发出来以后 许多其它语言中也出现了类似接口 目录 1 发展背景 2 规范概览 3 示例程序 4 调用一个应用程序的示例 5 WSGI兼容的应用和框架 6 影响 7 注释 8 参考文献 9 外部連結发展背景 编辑以前 如何选择合适的Web应用程序框架成为困扰Python初学者的一个问题 这是因为 一般而言 Web应用框架的选择将限制可用的Web服务器的选择 反之亦然 那时的Python应用程序通常是为CGI FastCGI mod python 英语 mod python 中的一个而设计 甚至是为特定Web服务器的自定义的API接口而设计的 WSGI 1 有时发音作 wiz gee 是作为Web服务器与Web应用程序或应用框架之间的一种低级别的接口 以提升可移植Web应用开发的共同点 WSGI是基于现存的CGI标准而设计的 规范概览 编辑WSGI區分為兩個部份 一為 伺服器 或 网关 另一為 應用程序 或 應用框架 在處理一個WSGI請求時 伺服器會為應用程序提供環境資訊及一個回呼函數 Callback Function 當應用程序完成處理請求後 透過前述的回呼函數 將結果回傳給伺服器 所谓的 WSGI 中介軟體 同时实现了API的两方 因此可以在WSGI服务器和WSGI应用之间起调解作用 从Web服务器的角度来说 中介軟體扮演应用程序 而从应用程序的角度来说 中介軟體扮演服务器 中介軟體 组件可以执行以下功能 重写环境变量后 根据目标URL 将请求消息路由到不同的应用对象 允许在一个进程中同时运行多个应用程序或应用框架 负载均衡和远程处理 通过在网络上转发请求和响应消息 进行内容后处理 例如应用XSLT样式表 示例程序 编辑用Python语言写的一个符合WSGI的 Hello World 应用程序如下所示 def app environ start response start response 200 OK Content Type text plain yield b Hello world n 其中 第一行定义了一个名为 app 的 callable 註 1 接受两个参数 environ 和 start response environ 是一个包含了 CGI 中的环境变量的字典 第二行调用了start response 状态指定为 200 OK 消息头指定为内容类型是 text plain start response 也是一个 callable 接受两个必须的参数 status HTTP 状态 和 response headers 响应消息的头 第三行将响应消息的消息体返回 调用一个应用程序的示例 编辑此章节需要扩充 2011年3月1日 调用一个程序并获取它的应答消息的例子如下所示 def call application app environ body status headers None None def start response status headers status headers status headers return body append app iter app environ start response try for item in app iter body append item finally if hasattr app iter close app iter close return status headers 0 status headers 1 join body status headers body call application app environ WSGI兼容的应用和框架 编辑支持WSGI的Web应用框架有很多 BlueBream bobo 2 Bottle 3 CherryPy Django 4 Flask Google App Engine s webapp2 Gunicorn prestans 5 Pylons Pyramid restlite 6 Tornado Trac TurboGears Uliweb 7 web py 8 web2py weblayer 9 Werkzeug 10 影响 编辑2003年 原初的Python版本 11 2007年 Rack Ruby版本 12 2008年 Lua WSAPI Lua版本 13 2009年 JSGI JavaScript版本 14 2009年 PSGI Perl版本 15 2010年 Hack Haskell版本 16 注释 编辑 在规范中 使用术语 callable 表示一个函数 方法 类或带有 call method实例 参考文献 编辑 PEP 3333 页面存档备份 存于互联网档案馆 Python Web Server Gateway Interface v1 0 Bobo light weight framework for creating WSGI web applications 2021 02 09 原始内容存档于2011 12 01 Bottle Micro Framework 2021 02 09 原始内容存档于2014 06 04 Django with WSGI support 2011 03 18 原始内容存档于2021 04 01 prestans Micro Framework 2013 09 23 原始内容存档于2012 10 08 restlite server tools for quick prototyping 2013 09 23 原始内容存档于2016 06 01 Ulibweb github source code 2013 09 23 原始内容存档于2021 12 10 web py official site 2012 08 28 原始内容存档于2011 10 26 weblayer package for writing WSGI application 2011 03 18 原始内容存档于2013 01 26 Werkzeug the Python WSGI Utility Library 2013 09 23 原始内容存档于2021 04 01 1 页面存档备份 存于互联网档案馆 WSGI 存档副本 2011 03 18 原始内容存档于2007 03 15 Rack接口 2 页面存档备份 存于互联网档案馆 WSAPI接口 3 页面存档备份 存于互联网档案馆 JSGI接口 4 页面存档备份 存于互联网档案馆 PSGI接口 5 页面存档备份 存于互联网档案馆 Hack接口外部連結 编辑PEP 333 Python Web Server Gateway Interface v1 0 页面存档备份 存于互联网档案馆 PEP 3333 Python Web Server Gateway Interface v1 0 1 页面存档备份 存于互联网档案馆 WSGI metaframework 关于WSGI的Wiki网站 页面存档备份 存于互联网档案馆 英文 WSGI教程 页面存档备份 存于互联网档案馆 英文 Hoxide 2006 03 03 WSGI简介 啄木鸟关于wsgi的介绍 页面存档备份 存于互联网档案馆 取自 https zh wikipedia org w index php title Web服务器网关接口 amp oldid 78947605, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。