18.4.3 wsgiref.simple_server – 简单的WSGI http服务
这个模块实现了一个简单的HTTP服务(基于BaseHTTPServer),为WSGI应用提供服务。每个服务实例在一个给定的主机和端口上为一个单一的WSGI应用提供服务。如果你想要在一个单一的主机和端口上为多个应用提供服务,你可以创建一个WSGI应用,解析PATH_INFO为每个请求选择调用的应用。(例如,使用wsgiref.util中的shift_path_info()函数。)make_server(host, port, app [, server_class=WSGIServer [, handler_class=WSGIRequestHandler]])
创建一个新的监听在host和port上的WSGI服务,为app接收连接。返回值是一个提供的server_class实例,并且使用指定的handler_class处理请求。app必须是一个定义在PEP 333中的WSGI应用对象。
例子用法:
from wsgiref.simple_server import make_server, demo_app
httpd = make_server('', 8000, demo_app)
print "Serving HTTP on port 8000..."
# Respond to requests until process is killed
# 响应请求直到进程被杀死
httpd.serve_forever()
# Alternative: serve one request, then exit
# 二择一:服务一个请求,然后退出
##httpd.handle_request()
demo_app(environ, start_response)
这个函数是一个小的但完整的WSGI应用,返回一个包含“Hello world!”信息的文本页和在environ参数中提供的key/value对的一个列表。它的作用是检查一个WSGI服务(如wsgiref.simple_server)能正确地运行一个简单的WSGI应用。
Class WSGIServer(server_address, RequestHandlerClass)
创建WSGIServer实例。server_address应该是(host,port)元组,RequestHandlerClass应该是BaseHTTPServer的子类。BaseHTTPRequestHandler将被用来处理请求。
你通常地不需要调用构造函数,同样地make_server()函数可以为你处理所有详情。
WSGIServer是BaseHTTPServer.HTTPServer的子类,所以所有它的方法(如server_forever()和handle_request())可用。WSGIServer也提供这些特定的WSGI方法:
set_app(application)
设置回调application作为WSGI应用接收请求。
get_app()
返回当前设置地应用回调。
通常地,尽管,你不需要使用这些额外的方法,像set_app()通常被make_server()调用一样,get_app()主要地为请求处理实例的好处存在。
Class WSGIRequestHandler(request, client_address, server)
为给定的request(如,一个socket),client_address(一个(host,port)元组),和server(WSGIServer实例)创建一个HTTP处理程序。
你不需要直接地创建这个类的实例;它被自动地创建依照WSGIServer对象需要的。你可以,尽管,这个类子类作为handler_class提供给make_server()函数。子类中重载一些可能相关的方法:
get_environ()
为请求返回一个包含WSGI环境的字典。缺省实现复制WSGIServer对象的base_environ字典属性的内容,然后添加从HTTP请求中派生的各种头。每次调用这个方法,应该返回一个新的包含所有PEP 333中规范的相关的CGI环境变量的字典。
get_stderr()
返回作为wsgi.errors流使用的对象。缺省实现仅返回sys.stderr()。
handle()
处理HTTP请求。缺省实现用一个wsgiref.handlers类创建一个处理程序实例,实现实际的WSGI应用接口。
出处PYTHON中国([url]www.okpython.com[/url])关于翻译的任何事情请EMAIL给我zkfarmer(zkfarmer#gmail.com),更多文档在我的站点([url]www.zkfarmer.org[/url])。
页:
[1]