zoukankan      html  css  js  c++  java
  • 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模块包括中间件/视图函数/数据库/模板获取数据/渲染

  • 相关阅读:
    nvalid bound statement (not found)
    小程序
    maven启动项目时报错
    创建Maven项目出错
    小程序的tab标签实现效果
    C# 异步
    C#中计算时间差
    linq筛选唯一
    GMap.net控件学习记录
    nodepad++ 正则 替换
  • 原文地址:https://www.cnblogs.com/sama/p/9287164.html
Copyright © 2011-2022 走看看