13

我正在尝试了解 WSGI 的功能并需要一些帮助。

到目前为止,我知道它是服务器和应用程序之间的一种中间件,用于将不同的应用程序框架(驻留在服务器端)与应用程序接口,前提是相关框架具有 WSGI 适配器。继续理论部分,我知道服务器要与应用程序通信,服务器调用一个可调用对象(它需要两个参数:环境变量和 start_response 函数)。这里的 start_response 函数由服务器 (?) 提供,并由应用程序使用,其中包含响应状态和标头,后跟响应正文。

我对上面写的内容知之甚少,所以这里是新手问题:1)一般呼叫流程是什么?应用程序将为服务器提供一个可调用对象,然后服务器将使用该可调用对象并使用 env_vars 和 start_response 函数作为参数来调用应用程序?

2) 最让我困惑的是应用程序正在发送请求标头,然后它也发送响应正文。这是什么类型的请求?

请赐教,因为我无法理解这些东西。

谢谢!

4

1 回答 1

8

调用流程如下:

  1. 服务器有一个http连接,
  2. 服务器解析 http 请求行和标头,读取正文,
  3. 服务器根据请求填充环境字典,
  4. 服务器以environstart_response作为参数调用可调用的应用程序,
  5. 应用程序可调用调用start_response并带有响应状态和响应标头,
  6. 应用程序向服务器返回响应正文,
  7. 服务器将http响应发送给客户端。

对于你的第二个问题,请求/响应是wsgi协议定义的接口(例如status = '200 OK', response_headers = [('Content-type', 'text/plain')]),与http不一样请求/响应。

您可以浏览站立库模块wsgiref作为参考。

于 2012-08-31T08:01:07.907 回答