WSGI 程序 起步

本文地址:http://blog.csdn.net/spch2008/article/details/8997579


本文中程序的放置路径及运行方式在 Window + Apache + WSGI 配置指明。


第一WSGI程序

def spch_wsgi(environ, start_response):
  
    status = '200 OK'
    response_headers = [('Content-Type', 'text/plain')]
    start_response(status, response_headers)

    return ['Hello World!']

application = spch_wsgi

WSGI server检索application函数, 并传递两个参数environ, start_response。

environ 为一个字典,包含环境变量。

start_response 为一个函数, 用于返回状态信息。


一个WSGI程序要完成两件事:

     其一:返回HTTP header。本例中, 状态‘200 OK‘, 表明一切正常。

     其二:返回一个iterable containing, 本例中是一个list。



输出environ信息

def application(environ, start_response):

	response_body = ""
	for k in environ:
		tmp = "%s = %s \n" % (k, environ[k])
		response_body += tmp
	
	status = '200 OK'
	response_headers = [('Content-Type', 'text/plain')]
	start_response(status, response_headers)
	
	return [response_body]

wsgi.multiprocess = False 
SERVER_PROTOCOL = HTTP/1.1 
SERVER_SOFTWARE = Apache/2.2.22 (Win32) mod_wsgi/3.3 Python/2.7.4 
SCRIPT_NAME = /wsgi 
mod_wsgi.handler_script =  
SERVER_SIGNATURE =  
REQUEST_METHOD = GET 
PATH_INFO =  
PATHEXT = .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC 
QUERY_STRING =  
HTTP_USER_AGENT = Mozilla/5.0 (Windows NT 6.2; WOW64; rv:21.0) Gecko/20100101 Firefox/21.0 
HTTP_CONNECTION = keep-alive 
SERVER_NAME = localhost 
REMOTE_ADDR = 127.0.0.1 
mod_wsgi.request_handler = wsgi-script 
wsgi.url_scheme = http 
mod_wsgi.callable_object = application 
SERVER_PORT = 80 
mod_wsgi.version = (3, 3) 
mod_wsgi.input_chunked = 0 
SERVER_ADDR = 127.0.0.1 
DOCUMENT_ROOT = D:/Program Files (x86)/Apache Software Foundation/Apache2.2/htdocs 
mod_wsgi.process_group =  
COMSPEC = C:\Windows\system32\cmd.exe 
SCRIPT_FILENAME = C:/wsgi_app/wsgi_handler.py 
SERVER_ADMIN = admin@localhost.com 
wsgi.input = <mod_wsgi.Input object at 0x01379DE0> 
HTTP_HOST = localhost 
wsgi.multithread = True 
SystemRoot = C:\Windows 
REQUEST_URI = /wsgi 
HTTP_ACCEPT = text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
WINDIR = C:\Windows 
wsgi.version = (1, 1) 
GATEWAY_INTERFACE = CGI/1.1 
wsgi.run_once = False 
wsgi.errors = <mod_wsgi.Log object at 0x01379D40> 
REMOTE_PORT = 64214 
HTTP_ACCEPT_LANGUAGE = zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3 
mod_wsgi.application_group = 192.168.209.1|/wsgi 
mod_wsgi.script_reloading = 1 
wsgi.file_wrapper = <built-in method file_wrapper of mod_wsgi.Adapter object at 0x012E1770> 
HTTP_ACCEPT_ENCODING = gzip, deflate 


上述代码也可以通过类来实现,类中要重载__call__,这样的好处是可以从其它类继承,复用代码。

class MyApp:
    def __call__(self, environ, start_response):
        response_body = ['Hello World!']
 
        status = '200 OK'
        response_headers = [('Content-Type', 'text/plain')]
        start_response(status, response_headers)

        return response_body
		
application = MyApp()


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值