1 WSGI

# WSGI(是一套协议,很多东西比如wsgiref, uwsgiref遵循这一套协议)
    - django系统本质
        别人的socket(wsgiref或者uwsgiref) + django
        
    - 简单定义
        WSGI(Web Server Gateway Interface)是一种规范,它定义了使用python编写的web app与web server之间接口格式,
        实现web app与web server间的解耦。

    - 更完整的web请求生命周期
        request --> 遵循wsgi的socket服务器(wsgiref)--->django的中间件--->路由系统--->视图函数
        视图函数--->路由系统--->中间件--->wsgi--->客户端

    - django借用的wsgiref服务器的样例
        from wsgiref.simple_server import make_server
        def RunServer(environ, start_response):
            """
                @params: environ 请求的相关信息
                @params: start_response容器,将里面的内容作为消息头返回给用户
                @return  返回的内容作为消息体返回给用户
            """
            start_response('200 OK', [('Content-Type', 'text/html')])
            return [bytes('<h1>Hello, web!</h1>', encoding='utf-8'), ]

        if __name__ == '__main__':
            httpd = make_server('', 8000, RunServer)
            httpd.serve_forever()
            # 等待客服端的socket请求,当请求过来时,执行RunServer函数

    - 一个简单的socket服务器
        import socket
        def handle_request(client):
            buf = client.recv(1024)
            client.send("HTTP/1.1 200 OK\r\n\r\n")
            client.send("Hello, Seven")

        def main():
            sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            sock.bind(('localhost',8000))
            sock.listen(5)
            while True:
                connection, address = sock.accept()
                handle_request(connection)
                connection.close()

        if __name__ == '__main__':
            main()
View Code

相关文章:

  • 2021-06-09
  • 2021-06-24
  • 2021-06-16
  • 2021-08-29
  • 2022-12-23
  • 2021-10-12
  • 2021-10-08
猜你喜欢
  • 2022-12-23
  • 2021-08-03
  • 2022-03-02
  • 2022-12-23
  • 2022-02-08
相关资源
相似解决方案