您的位置:首页 > 理论基础 > 计算机网络

python wsgi 网络编程1

2014-10-14 14:36 417 查看
阅读《The Quick Python Book 2nd》

Python有很多web框架,如Zope and Plone, Django, TurboGears,web2py等等。

早期的python web框架中,关于 web应用程序 与 web服务器之间交互的标准很少。这导致了web框架的选择有限于你可用的web服务器。而 WSGI(web服务器网关)的存在就提供了一个web应用程序 与 web服务器之间的交互的标准。这使得在不同的web服务器上使用web应用和web框架变得更简单。下图是一个WSGI应用程序和web服务器交互的简单流程图:



如果你要写web服务器或web应用框架,你就需要了解WSGI的细节信息。其它情况下,知道一个WSGI应用程序的创建是很有用的。标准库中在wsgiref模块中包括WSGI服务器的参考实现。

创建一个基本的WSGI应用程序可通过使用wsgiref.simple。很简单,当你创建好以后,你唯一需要传递给server的就是: 一个可以调用的应用程序对象(它从server上接收2个参数:一个环境变量的字典;一个可调用的对象,它能接收HTTP status和 headers for the response)。

a basic "Hello World" WSGI application

# message_wall01.py

from wsgiref.simple_server import make_server

def message_wall_app(environ, start_response):

status=b'200 OK'

headers=[(b'Content-type', b'text/html; charset=utf-8')]

start_response(status,headers)

return ["<h1>Message Wall</h1>"]

httpd=make_server('', 8000, message_wall_app)

print("Serving on port 8000...")

httpd.serve_forever()

运行这个脚本,然后打开浏览器,输入 http://127.0.0.1:8000,就能看到“Hello world”

由于我是在另一台物理机上起的虚拟机上运行的程序。要想在我的笔记本上使用浏览器看结果,必须先使用plink进行端口的粘连。这里就不详述了。

创建服务器:make_server,参数包括:server地址,端口,应用对象。

启动服务器: serve_forever 监听所有活动的interfaces ;handle_request 仅服务一个请求然后退出。

创建appplication object:hello_world_app,参数包括:environ(CGI风格的变量字典,来自server) 和 start_response(callable object,用于发送HTTP status和headers of response)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: