gpt4 book ai didi

python - 你能解释一下 mod_wsgi 和 werkzeug 之间更详细的区别吗? (SOS新手)

转载 作者:太空狗 更新时间:2023-10-29 19:31:08 26 4
gpt4 key购买 nike

正如我在标题中所述,我目前对对它们的基本理解感到非常不舒服。

据我所知,mod_wsgi 实现了可以在 Apache Web 服务器下运行的 WSGI 规范。

它是用 C 语言编写的。

另一个,werkzeug 是一种具有实用实用程序的工具包。我还回顾了 werkzeug 可以运行在其源代码中实现的简单服务(serving.py 中的 make_server)。我知道 werkzeug 具有有用的功能和简单的服务器功能。

下面是我想知道的。

在Apache web server下使用基于werkzeug的Flask like框架时,mod_wsgi具体做了什么?

werkzeug 也有基本的 http 服务器功能,不需要支持 mod_wsgi。

谁能解释一下 mod_wsgi 和 werkzeug 之间的区别?

mod_wsgi 和 werkzeug 从 web 服务器的角度来看有重复的特性。

最佳答案

WSGI 代表 Web 服务器网关接口(interface),(大部分)由 PEP 333 在 http://www.python.org/dev/peps/pep-0333/ 定义.

这是 Python 社区为建立 Web 服务器与 Python 应用程序对话的标准机制所做的努力。

理论上,任何符合 wsgi 标准的服务器(或现有网络服务器的扩展)都应该能够加载和运行任何符合 wsgi 标准的应用程序。

werkzeug 是一个网络应用程序框架,可以在兼容的 WSGI 服务器下运行,例如 Apache+mod_wsgi。它还包含可用于开发的内置开发服务器。


WSGI 一开始可能会很困惑,但实际上非常简单。 WSGI 规范要求您的 Python 应用程序执行以下操作:

  1. 定义一个可调用的名为application
  2. said callable 应该接受 2 个参数:(environ, start_response)
  3. environ 是环境变量的字典
  4. start_response 是一个需要调用来启动响应的可调用对象

一旦 application 被调用,它就会处理请求,构建输出,并且:

  1. 调用 start_response('200 OK', Headers)
  2. 返回[内容]

一个简单的 WSGI 应用程序可能如下所示:

def application(environ, start_response):
status = '200 OK'
output = 'Hello World!'

response_headers = [('Content-type', 'text/plain'),
('Content-Length', str(len(output)))]
start_response(status, response_headers)

return [output]

强烈建议您使用现有的WSGI框架,因为解析HTTP请求、处理文件上传、编码字符等涉及很多细节......

看看 Bottle、Flask、werkzeug、AppStruct 等......

关于python - 你能解释一下 mod_wsgi 和 werkzeug 之间更详细的区别吗? (SOS新手),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12684509/

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