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

本文介绍了WSGI的基本概念及其在Python Web开发中的作用,并对比了wsgiref和uwsgi的不同之处。此外还概述了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请求的生命周期

1241320-20180710091206036-935400638.png

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

转载于:https://www.cnblogs.com/sama/p/9287164.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值