Django 学习笔记-1 socket 和 WSGI

作者: 游文影月志 | 来源:发表于2021-03-28 12:24 被阅读0次

    1. 用 socket 实现一个简单的 Web 服务器

    #! python3
    
    import socket
    
    
    def main():
        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  # 开启socket
        sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)  # 清除IP和端口占用
        sock.bind(('localhost', 8000))  # 绑定IP和端口到套接字
        sock.listen(3)  # 监听,5表示客户端最大连接数
    
        while True:
            conn, addr = sock.accept()
            data = conn.recv(1024)  # 接收数据大小为1024字节
            print(data)
    
            conn.send(b'HTTP/1.1 200 OK\r\nContent-Type:text/html; charset=utf-8\r\n\r\n')
            conn.send('Hello, World!'.encode('utf-8'))
            conn.close()
    
    
    if __name__ == "__main__":
        main()
    
    

    2. 用 wsgiref 实现一个简单的 Web 服务器

    wsgiref 是 WSGI 规范的范例实现,而 WSGI(Python Web Server Gateway Interface ) 即 Web服务器网关接口,是为 Python 语言定义的 Web 服务器和 Web 应用程序或框架之间的一种简单而通用的接口。

    #! python3
    
    from wsgiref.simple_server import make_server
    
    
    def app(environ, start_response):
        start_response('200 OK', [('Content-Type', 'text/html')])
        return [b'<h1>Hello, world!</h1>']
    
    
    def main():
        my_server = make_server('localhost', 8000, app)
        my_server.serve_forever()
    
    
    if __name__ == '__main__':
        main()
    

    2.1 增加支持多路由功能

    #! python3
    
    from wsgiref.simple_server import make_server
    
    
    def index():
        return [b'<h1>Hello, world!</h1>']
    
    
    def hello():
        return [b'<h1>Hello!</h1>']
    
    
    def world():
        return [b'<h1>World!</h1>']
    
    
    urls = {
        '/': index,
        '/hello': hello,
        '/world': world
    }
    
    
    def app(environ, start_response):
        request_url = environ.get('PATH_INFO')
        if request_url in urls:
            start_response('200 OK', [('Content-Type', 'text/html')])
            return urls[request_url]()
        else:
            start_response('404 NOT FOUND', [('Content-Type', 'text/html')])
            return [b'<h1>404, Page Not Found!</h1>']
    
    
    def main():
        my_server = make_server('localhost', 8000, app)
        my_server.serve_forever()
    
    
    if __name__ == '__main__':
        main()
    
    

    相关文章

      网友评论

        本文标题:Django 学习笔记-1 socket 和 WSGI

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