Skip to content

Instantly share code, notes, and snippets.

@wangchang
Created December 26, 2012 05:44
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save wangchang/4378216 to your computer and use it in GitHub Desktop.
Save wangchang/4378216 to your computer and use it in GitHub Desktop.
WSGI应用常见的几种写法
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