欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-03-23 17:57:56
...

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

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


 

相关标签: python wsgi