使用 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‘,否则不允许
使用 wsgiref 创建WSGI APP的更多相关文章
- 如何使用werkzeug创建WSGI APP
		注意 : 1.定义__call__的意义 class App(): def __init__(self): pass def method(self): pass app=App() app() #错 ... 
- 第三百七十三节,Django+Xadmin打造上线标准的在线教育平台—创建用户app,在models.py文件生成3张表,用户表、验证码表、轮播图表
		第三百七十三节,Django+Xadmin打造上线标准的在线教育平台—创建用户app,在models.py文件生成3张表,用户表.验证码表.轮播图表 创建Django项目 项目 settings.py ... 
- 利用spring boot创建java app
		利用spring boot创建java app 背景 在使用spring框架开发的过程中,随着功能以及业务逻辑的日益复杂,应用伴随着大量的XML配置和复杂的bean依赖关系,特别是在使用mvc的时候各 ... 
- WeX5学习笔记-创建本地APP相关问题
		1.在Native新建[创建本地APP]时, "服务地址”为本地IP和端口号,例如本地IP为192.168.253.1,端口号为8080,则设置为http://192.168.253.1:8 ... 
- 用PhpStorm IDE创建GG App Engine PHP应用教程
		在上一篇教程里我们已经介绍了如何为PhpStorm搭建软件环境,那么今天就该是正式的开始创建App了: 3.创建首个Google App Engine PHP Application 现在我们就可以开 ... 
- iOS 10 创建iMessage App
		原文作者 澳大利亚19岁少年--Davis Allie ----原文地址 时值中秋佳节, 送给出门在外的程序猿们 ! 骚年们, 自己写个表情包斗图可否 ! 斗-seal.svg.png 第一. 介绍 ... 
- 根据iOS 10 的新特性,创建iMessage App,可用于自定义表情
		第一. 介绍(原文作者 澳大利亚19岁少年--Davis Allie ----原文地址) 随着iOS10的发布,苹果对开发者开放了Messages应用程序,开发人员现在可以创建他们自己的各种类型 并且 ... 
- react系列笔记1 用npx npm命令创建react app
		react系列笔记1 用npx npm命令创建react app create-react-app my-app是开始构建新的 React 单页应用程序的最佳方式.它已经为你设置好了开发环境,以便您可 ... 
- 第三百七十四节,Django+Xadmin打造上线标准的在线教育平台—创建课程app,在models.py文件生成4张表,课程表、课程章节表、课程视频表、课程资源表
		第三百七十四节,Django+Xadmin打造上线标准的在线教育平台—创建课程app,在models.py文件生成4张表,课程表.课程章节表.课程视频表.课程资源表 创建名称为app_courses的 ... 
随机推荐
- 【LeetCode 337 & 329. memorization DFS】House Robber III
			/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode ... 
- Suricata的规则解读(默认和自定义)
			不多说,直接上干货! 见suricata官网 https://suricata.readthedocs.io/en/latest/rules/index.html 一.Suricata的规则所放位置 ... 
- 2018微软实习笔试一道dp题目总结
			题意大概是说在一维数轴上起点和终点的距离是d,现在我们要从起点走到终点.每走一个单位长度消耗一个单位能量,初始时有K单位能量.同时在起点和终点之间分布一些加油站a1,a2,...an,给你加油站数量. ... 
- cordova安装方法
			安装cordova之前需要先安装node.js和npm 然后在命令行运行:npm install -g cordova即可安装到最新版本的cordova 如果要安装指定版本,命令为:npm insta ... 
- JS正则表达式匹配<div><style>标签
			测试字符串: <style>v\:* { BEHAVIOR: url(#default#VML) } o\:* { BEHA ... 
- js实现ctrl+v粘贴并上传图片
			前端页面: <textarea class="scroll" id="text" placeholder="在此输入...">& ... 
- c语言  错误记录
			1.预处理错误 #include <> //系统内部的 #include "" // 自定义的 遇到 not find------解决方案:gcc -I 跟查找 ... 
- zabbix利用微信报警
			一.背景介绍 报警的方式有很多种,比如常用的邮件报警,短信,微信等.那这篇文章主要是实现微信报警. 值得注意的是,之前使用微信企业公众号,现在微信企业公众号更新成企业微信了.所以直接注册企业微信,进入 ... 
- Object.assign(o1, o2, o3) 对象 复制 合拼
			Object 对象方法学习之(1)—— 使用 Object.assign 复制对象.合并对象 合并对象 var o1 = {a: 1}; var o2 = {b: 2}; var o3 = {c: 3 ... 
- vue 模块 props
			inbody.vue <template> <div> <Breadcrumb :style="{margin: '24px 0'}"> < ... 
