WSGI模块及Django请求的生命周期

1. WSGI模块

1.1 基本概念

1.1.1 WSGI(Web Server Gateway Interface/Web服务网管接口)是一种协议规范,定义了使用Python编写web app 与 web server之间接口格式,实现web与webserver之间的解耦.
1.1.2 wsgiref与uwsgi区别
  1. wsgiref + Django 性能较低 无并发
  2. uwsgi + Django 性能高 工作使用

1.2 基本原理

1.2.1 WSGI基本原理
  1. import socket 
  2.  
  3. def main(): 
  4. sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
  5. sock.bind(('localhost',8000)) 
  6. sock.listen(5
  7.  
  8. while True
  9. connection, address = sock.accept() 
  10. v = client.recv(1024
  11. # 自己解析:各种split分割 
  12. # 请求相关 
  13.  
  14. # Django操作 
  15.  
  16. # 产出字符串 
  17. client.send(产出字符串) 
  18. client.close() 
  19.  
  20. if __name__ == '__main__'
  21. main() 
1.2.2 wsgiref实现原理
  1. from wsgiref.simple_server import make_server 
  2.  
  3. def RunServer(environ, start_response): 
  4. # environ 请求相关的所有操作 
  5. # start_response 要返回的数据 
  6. # Django框架的开始 
  7. # 中间件 
  8. # 路由系统 
  9. # 视图函数 
  10. # 模板渲染 
  11. start_response('200 OK', [('Content-Type', 'text/html')]) # 请求头相关数据,本函数中相当于响应头 
  12. return [bytes('<h1>Hello, web!</h1>', encoding='utf-8'), ] # 本函数中相当于响应体 
  13.  
  14.  
  15. if __name__ == '__main__'
  16. httpd = make_server('127.0.0.1', 8000, RunServer) 
  17. httpd.serve_forever()  

2. Django请求的生命周期

其中Django模块包括中间件/视图函数/数据库/模板获取数据/渲染

猜你喜欢

转载自www.cnblogs.com/sama/p/9287164.html