使用 wsgiref 创建WSGI APP
wsgify装饰器将一个普通函数转变成WSGI应用程序。
class webob.dec.wsgify(func=None, RequestClass=None, args=(), kwargs=None, middleware_wraps=None)
from wsgiref.simple_server import make_server
from webob import Request, Response
from webob.dec import *
@wsgify
def test(req):
res = Response()
res.status = 200
res.body = "spch"
return res
class MyApp:
def __call__(self, environ, start_response):
req = Request(environ)
return test(environ, start_response)
application = MyApp()
httpd = make_server('localhost', 8081, application)
httpd.serve_forever()
其中,参数req为一个Request实例,可以通过req读取相应环境变量。
而且,我们可以定制装饰器
from wsgiref.simple_server import make_server
from webob import Request, Response
from webob.dec import *
from webob.exc import *
class MyRequest(Request):
@property
def is_local(self):
return self.remote_addr == '127.0.0.1'
@wsgify(RequestClass=MyRequest)
def myfunc(req):
if req.is_local:
return Response('hi!')
else:
raise HTTPForbidden
class MyApp:
def __call__(self, environ, start_response):
req = Request(environ)
return myfunc(environ, start_response)
application = MyApp()
httpd = make_server('localhost', 8081, application)
如何是本机访问,则输出’hi‘,否则不允许
最新文章
- CUDA ---共享存储器
- hibernate(八) Hibernate检索策略(类级别,关联级别,批量检索)详解
- Linux老是提示compat-libstdc++ is not installed的原因
- JSOI Round 2题解
- jsp页面el表达式不起作用
- 巧用MySQL之Explain进行数据库优化
- Nodejs之模板ejs
- JS自定义对象以及相关成绩系统完整案例演示
- Beta冲刺Day7
- mysql自带的example测试数据库导入Centos6.5
- 从GitHub下载demo时遇到的依赖问题
- linux系统下MySQL表名区分大小写问题
- Java基础知识➣网络Socket(六)
- stund客户端使用结果说明
- MySQL MHA 搭建&;测试(环境:CentOS7 + MySQL5.7.23)
- Oracle OLAP 与 OLTP 介绍
- AS-->创建项目(慢)和打开项目(慢)等需要注意的问题
- LeetCode--100--相同的树
- websevice之三要素
- windows环境下mongodb下载、安装和使用总结