浏览器通过 WSGI 请求动态资源的过程

解释: 市面上的web服务器,如:Nginx、Apache等,可以抗住高并发等等优点。但这个是别人用其他语言写好的框架。 我们的应用框架(django、flask)等, 如果想使用这些web服务器。就必须遵从某种协议, 那就是WSGI协议的由来。其他语言的框架也是会有类似WSGI协议的协议。

 

解释: 补充一下吧, 浏览器要解析web服务器的数据, 也是有协议的, 必须发送header+body的形式。所以web服务器和应用框架的通信目的就是拿到 header+body。  他们之间的过程如下:

1)  浏览器向web服务器动态发起请求
2)  web服务器调用框架的def application(env, set_response_header)
3)  框架通过调用web服务器def set_response_header(header)方法,将header传入函数
4)  调用返回,此时web服务器端已经保存了header信息。
5)  生成动态页面的body信息,
6)  框架返回 响应body给web服务器
7)  web服务器把数据返回给浏览器

下面是伪代码:

web服务器:
class Server():
    def __init__():
        self.header = None
        self.body = None

def set_response_header(header):
    # 保存 响应头信息
    self.headers = headers




# 当接收到浏览器的一个请求并判断是动态资源的请求时;调用框架的application()
server = Server()

server.body = framework.application(environ,set_response_header)

response = server.headers + server.body
应用服务框架

def gen_header():
    header = "i am header"
    return header

def gen_body():
    body = "i am body"
    return body

def application(env, set_response_header):
    """
     application是在框架中定义,在服务器中被调用
     set_response_header 是服务器中的一个设置响应头信息的函数
    """
    header = gen_header()
    set_response_header(header)
    
    body  = gen_body()
    return body


 

发布了12 篇原创文章 · 获赞 7 · 访问量 1万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览