Created
December 26, 2012 05:44
-
-
Save wangchang/4378216 to your computer and use it in GitHub Desktop.
WSGI应用常见的几种写法
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from webob import Request | |
from webob import Response | |
from webob import exc | |
import pprint | |
def app6(environ, start_response): | |
req = Request(environ) | |
resp_body = '' | |
for k,v in req.environ.iteritems(): | |
resp_body += '%s:%s\n' % (k,v) | |
resp = Response(body=resp_body) | |
return resp(environ, start_response) | |
def controller1(func): | |
def application(environ,start_response): | |
#do something else | |
resp_body = func(environ) | |
start_response("200 OK",[("Content-type","text/plain")]) | |
return resp_body | |
return application | |
@controller1 | |
def app7(environ): | |
content = [] | |
for k,v in environ.iteritems(): | |
content.append('%s:%s \n' % (k,v)) | |
return content | |
def controller2(func): | |
def replacement(environ, start_response): | |
req = Request(environ) | |
try: | |
resp_body = func(req) | |
except exc.HTTPException, e: | |
resp_body = e | |
resp = Response(body=resp_body)#body must be a string | |
resp.status = '200 very OK' | |
return resp(environ, start_response) | |
return replacement | |
@controller2 | |
def app8(req): | |
ret = '' | |
for k,v in req.environ.iteritems(): | |
ret = ret + '%s:%s \n' % (k,v) | |
return ret | |
def controller3(cls): | |
def replacement(environ, start_response): | |
req = Request(environ) | |
instance = cls(req, **req.urlvars) | |
method = req.method | |
if method == 'GET': | |
func = getattr(instance, method.lower()) | |
resp_body = func() | |
if isinstance(resp_body, basestring): | |
resp = Response(body=resp_body) | |
return resp(environ,start_response) | |
return replacement | |
class App9(object): | |
def __init__(self,req,**args): | |
self.req = req | |
def get(self): | |
body = '' | |
for k,v in self.req.environ.iteritems(): | |
body += '%s"%s \n' % (k,v) | |
return body | |
app9 = controller3(App9) | |
def app1(environ,start_response): | |
start_response("200 OK",[("Content-type","text/plain")]) | |
content = [] | |
for k,v in environ.iteritems(): | |
content.append('%s:%s \n' % (k,v)) | |
return content | |
class app2(object): | |
def __init__(self): | |
pass | |
def __call__(self,environ,start_response): | |
start_response("200 OK",[("Content-type","text/plain")]) | |
content = [] | |
for k,v in environ.iteritems(): | |
content.append('%s:%s \n' % (k,v)) | |
return content | |
application = app2() | |
class app3(object): | |
def __init__(self, environ, start_response): | |
self.environ = environ | |
self.start = start_response | |
def __iter__(self): | |
status = '200 OK' | |
response_headers = [('Content-type', 'text/plain')] | |
self.start(status, response_headers) | |
content = '' | |
for k,v in self.environ.iteritems(): | |
content += '%s:%s \n' % (k,v) | |
yield content | |
class app4(object): | |
def __init__(self): | |
pass | |
@staticmethod | |
def wsgi(environ,start_response): | |
start_response("200 OK",[("Content-type","text/plain")]) | |
content = [] | |
for k,v in environ.iteritems(): | |
content.append('%s:%s \n' % (k,v)) | |
return content | |
class app5(object): | |
def __init__(self): | |
print 'This is app5' | |
pass | |
@classmethod | |
def wsgi(cls,environ,start_response): | |
start_response("200 OK",[("Content-type","text/plain")]) | |
#content = [] | |
#for k,v in environ.iteritems(): | |
# content.append('%s:%s \n' % (k,v)) | |
#return content | |
return "Hello World" | |
if __name__ == '__main__': | |
from wsgiref.simple_server import make_server | |
server = make_server('192.168.1.11', 7070, app9) | |
server.serve_forever( |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment