博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Webob WSGI 装饰器
阅读量:4300 次
发布时间:2019-05-27

本文共 1183 字,大约阅读时间需要 3 分钟。

wsgify装饰器将一个普通函数转变成WSGI应用程序。

class webob.dec.wsgify(func=None, RequestClass=None, args=(), kwargs=None, middleware_wraps=None)

小示例

[python] 
  1. from wsgiref.simple_server import make_server  
  2. from webob import Request, Response  
  3. from webob.dec import *  
  4.  
  5. @wsgify  
  6. def test(req):  
  7.     res = Response()  
  8.     res.status = 200  
  9.     res.body   = "spch"  
  10.     return res  
  11.   
  12. class MyApp:  
  13.     def __call__(self, environ, start_response):  
  14.           
  15.         req = Request(environ)  
  16.           
  17.         return test(environ, start_response)  
  18.           
  19. application = MyApp()  
  20.   
  21. httpd = make_server('localhost'8081, application)    
  22. httpd.serve_forever()   
其中,参数req为一个Request实例,可以通过req读取相应环境变量。

而且,我们可以定制装饰器

[python] 
  1. from wsgiref.simple_server import make_server  
  2. from webob import Request, Response  
  3. from webob.dec import *  
  4. from webob.exc import *  
  5.   
  6. class MyRequest(Request):  
  7.     @property  
  8.     def is_local(self):  
  9.         return self.remote_addr == '127.0.0.1'  
  10.      
  11. @wsgify(RequestClass=MyRequest)  
  12. def myfunc(req):  
  13.     if req.is_local:  
  14.         return Response('hi!')  
  15.     else:  
  16.         raise HTTPForbidden  
  17.   
  18. class MyApp:  
  19.     def __call__(self, environ, start_response):  
  20.           
  21.         req = Request(environ)  
  22.           
  23.         return myfunc(environ, start_response)  
  24.           
  25. application = MyApp()  
  26.   
  27. httpd = make_server('localhost'8081, application)    
  28. httpd.serve_forever()   

如何是本机访问,则输出’hi‘,否则不允许

转载地址:http://wavws.baihongyu.com/

你可能感兴趣的文章
FFmpeg 的介绍与使用
查看>>
Android 虚拟机简单介绍——ART、Dalvik、启动流程分析
查看>>
原理性地理解 Java 泛型中的 extends、super 及 Kotlin 的协变、逆变
查看>>
FFmpeg 是如何实现多态的?
查看>>
FFmpeg 源码分析 - avcodec_send_packet 和 avcodec_receive_frame
查看>>
FFmpeg 新旧版本编码 API 的区别
查看>>
RecyclerView 源码深入解析——绘制流程、缓存机制、动画等
查看>>
Android 面试题整理总结(一)Java 基础
查看>>
Android 面试题整理总结(二)Java 集合
查看>>
学习笔记_vnpy实战培训day02
查看>>
学习笔记_vnpy实战培训day03
查看>>
VNPY- VnTrader基本使用
查看>>
VNPY - CTA策略模块策略开发
查看>>
VNPY - 事件引擎
查看>>
MongoDB基本语法和操作入门
查看>>
学习笔记_vnpy实战培训day04_作业
查看>>
OCO订单(委托)
查看>>
学习笔记_vnpy实战培训day05
查看>>
学习笔记_vnpy实战培训day06
查看>>
Python super钻石继承
查看>>