6 使用webob来包装wsgi请求和响应
先介绍下webob: WebOb是一个Python库,主要是用在WSGI中对请求环境变量request environment(也就是WSGI应用中的参数environ)进行包装(提供wrapper),并提供了一个对象来方便的处理返回response消息。WebOb提供的对象映射了大多数的HTTP方法,包括头解析,content协商等。这里的映射,就是说只需要对对象进行操作,就可以完成HHTP的方法,从而大大简化开发难度(http://blog.csdn.net/ztejiagn/article/details/8722838)。
因此,可以将代码进一步优化:
__author__= 'w00194081'
"""usewebob to warpper request"""
importwebob
importeventlet
fromeventlet import wsgi
fromwebob import Request
fromwebob import Response
classApplication(object):
def __call__(self, env, start_response):
req = Request(env)
print req.method
print req.body
print req.headers
response = Response(body="helloworld! I am sxmatch" , content_type='text/plain')
return response(env, start_response)
defstart():
print "start wsgi server"
app=Application()
wsgi.server(eventlet.listen(('192.168.82.191', 8090)), app)
wsgi_server= eventlet.spawn(start)
wsgi_server.wait()
这里我使用webob将wsgi server传入的env封装为Webob中的Request对象,并打印了request对象中的method,body,headers属性。最后用Webob中的Response对象来封装响应
7 总结
Openstack综合使用wsgi,router,webob,卸程等多个组件以支撑其自身业务,所以在学习openstack这部分时,困难还是比较多的,需要一步一步从基本学起。随便吐槽一下,为什么我的CSDN博客稍微写长一点就保存失败啊。。。。。好好的一篇文章硬是拆成了四篇。。。。。