wsgi

作者: 黑夜的眸 | 来源:发表于2020-03-27 16:09 被阅读0次

    Python 的很多知名的Web框架(例如Flask, Django)实际上都是遵从了这个wsgi模型。


    from wsgiref.simple_server import make_server
    
    
    def demo_app(environ,start_response):
        from io import StringIO
        stdout = StringIO()
        print("Hello world!", file=stdout)
        print(file=stdout)
        h = sorted(environ.items())
        for k,v in h:
            print(k,'=',repr(v), file=stdout)
        start_response("200 OK", [('Content-Type','text/plain; charset=utf-8')])
        return [stdout.getvalue().encode("utf-8")]
    
    
    if __name__ == '__main__':
        httpd = make_server('127.0.0.1', 8000, demo_app)
        httpd.serve_forever()
    
        # with make_server('', 8000, demo_app) as httpd:
        #     sa = httpd.socket.getsockname()
        #     print("Serving HTTP on", sa[0], "port", sa[1], "...")
        #     import webbrowser
        #     webbrowser.open('http://localhost:8000/xyz?abc')
        #     httpd.handle_request()  # serve one request, then exit
    

    WSGI Server作用

    • 监听HTTP服务端口(TCPServer, 80端口)
    • 接收浏览器端HTTP请求并解析封装成environ环境数据
    • 负责调用应用程序,将environ和start_response方法传入
    • 将应用程序响应的正文封装成HTTP响应报文返回浏览器端

    WSGI APP要求

    • 应用程序是一个可调用对象(函数、类都可以)
    • 这个可调用对象应该接收两个参数(environ, start_response)
    • 调用start_response
    • 最后必须返回一个可迭代对象

    相关文章

      网友评论

          本文标题:wsgi

          本文链接:https://www.haomeiwen.com/subject/mxnluhtx.html