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()