gpt4 book ai didi

python - Django - WSGIHandler start_response 并返回响应

转载 作者:行者123 更新时间:2023-12-01 05:48:48 25 4
gpt4 key购买 nike

我编辑了我的问题,因为我意识到我正在结合两个概念(WSGIHandler 和中间件)我不应该在这个问题中结合起来。


我试图对 WSGIHandler 的作用有一些基本的了解。

django.core.handlers.wsgi.py

class WSGIHandler(base.BaseHandler): initLock = Lock() request_class = WSGIRequest

def __call__(self, environ, start_response):

#...

start_response(status, response_headers)
return response

将使用 environstart_response 参数调用 WSGIHandler 实例。
environ 将用于创建 request 对象,该对象是 WSGIRequest 的实例。

request = self.request_class(environ)

WSGIHandler.get_response 将用于从 request 创建一个 HttpResponse 对象。

response = self.get_response(request)

我的问题:
start_response 是做什么的?此时已经创建了一个response对象。那么它会启动什么响应呢?它会在某处发送一些响应吗?它将返回响应发送的响应发送到哪里(即通常调用它的是什么?)?

最佳答案

当您编写网络应用程序时,您需要向服务器提供一个callable,服务器将在请求到达时调用该函数。该可调用函数负责生成响应并将响应发送回服务器。服务器依次将此响应发送回浏览器。

对于 django,可调用的是 WSGIHandler。由于它定义了一个__call__,所以这个__call__将被服务器调用。

发送到__call__的参数来自服务器。 start_response 也是一个由服务器实现的可调用函数。您无需担心其实现。因此,WSGIHandler__call__ 调用此可调用的 start_response

start_response 在内部创建 header ,稍后必须将其发送回浏览器。但它只在服务器上设置一些属性,它不会将响应发送回浏览器。它不会向任何地方发送任何响应。

调用start_response后,wsgi处理程序在返回响应行中返回实际响应。执行此行时,服务器会检查响应是否正确,然后根据响应发送 start_response 调用中设置的 cookie 或引发一些异常。

检查http://www.python.org/dev/peps/pep-0333/了解更多信息。

关于python - Django - WSGIHandler start_response 并返回响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15145440/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com