• 使用 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‘,否则不允许

  • 相关阅读:
    BZOJ3312: [Usaco2013 Nov]No Change
    BZOJ1750: [Usaco2005 qua]Apple Catching
    BZOJ2733: [HNOI2012]永无乡
    BZOJ4756: [Usaco2017 Jan]Promotion Counting
    PHP 反射机制Reflection
    NOD 1113矩阵快速幂
    CODEVS 3500
    hdu 5172 GTY's gay friends 线段树
    LA 4329 Ping pong
    hdu 3500 DFS(限定)
  • 原文地址:https://www.cnblogs.com/bayueman/p/6611155.html
Copyright © 2020-2023  润新知