WSGI
reference: http://webpython.codepoint.net/wsgi_tutorial
WSGI是一种标准,它对web应用和web服务器的交互接口进行了描述,那么遵从WSGI 应用接口的web应用程序就可以在遵从WSGI服务器接口的任意实现上运行。WSGI服务器接受来自所有客户端的请求,并将请求传递给相应的应用程序处理,并返回应用程序的处理结果给客户端。
WSGI web应用的接口实现需要满足可调用,因此接口实现可以是函数、方法、拥有__call__方法的类或实例,我们将其统称为可调用对象。可调用对象还需要满足:
1.拥有两个位置参数:
(1)包含环境变量的字典(environ)。当有客户端请求时,字典由服务器填充。
(2)一个可调用的函数(start_response)。向服务器返回状态码和响应头(response header)信息
2.必须以可迭代的方式返回字符串类型的响应体(response body),响应体需要选择合理的可迭代对象,否则会影响性能.
一个非常简单的满足WSGI应用条件的实例:
from
wsgiref.simple_server
import
make_server
def
simple_app(environ, start_response):
status
=
'200 OK'
response_headers
=
[(
'Content-type'
,
'text/plain'
)]
start_response(status, response_headers)
#
return
u
"This is hello wsgi app"
.encode(
'utf8'
)
return
[u
"This is hello wsgi app"
.encode(
'utf8'
)]
httpd
=
make_server('',
8000
, simple_app)
print
"Serving on port 8000..."
httpd.serve_forever()
若返回的响应体为注释的信息,则服务器会一个字符一个字符的传送,效率自然就很慢了