zoukankan      html  css  js  c++  java
  • 使用 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‘,否则不允许

  • 相关阅读:
    应用服务&领域服务
    Net程序调试
    node.js爬虫
    Amazon AWS S3 操作手册
    Spring MVC的异步模式DefferedResult
    mysql解决datetime与timestamp精确到毫秒的问题
    更改MySQL数据库的编码为utf8mb4
    MySQL中的表中增加删除字段
    Sublime Text 全程指引 by Lucida
    自定义多状态高仿应用下载百分数view
  • 原文地址:https://www.cnblogs.com/bayueman/p/6611155.html
Copyright © 2011-2022 走看看