正如我在标题上所说的,我现在对他们的基本理解感到很不舒服。
据我所知,mod_wsgi实现了可以在Apache web服务器下运行的wsgi规范。
它是用C语言编写的。
另一种是werkzeug,它是一种具有实用性的工具包。 我还回顾了werkzeug可以运行在其源代码中实现的简单服务(make_server in serving.py)。我知道werkzeug有有用的特性和简单的服务器特性。
下面是我想知道的。
在Apache web服务器下使用基于werkzeug的Flask类框架时,mod_wsgi具体做什么?
werkzeug还具有基本的http服务器功能,不需要mod_wsgi支持。
有谁能解释一下mod_wsgi和werkzeug之间的区别吗?
mod_wsgi和werkzeug从web服务器的角度复制了一些特性。
WSGI代表Web服务器网关接口(主要由PEP 333在http://www.python.org/dev/peps/pep-0333/定义)。
Python社区致力于为web服务器建立一种与Python应用程序对话的标准机制。
理论上,任何符合wsgi的服务器(或现有web服务器的扩展)都应该能够加载和运行任何符合wsgi的应用程序。
werkzeug是一个web应用程序框架,可以在兼容的WSGI服务器下运行,比如Apache+mod_WSGI。它还包含可用于开发的内置开发服务器。
一开始WSGI可能非常混乱,但实际上它非常简单。WSGI规范要求python应用程序执行以下操作:
application
的可调用environ
,start_response
)environ
是一个环境变量字典start_response
是一个可调用的,需要调用它来启动响应调用
application
后,它将处理请求,生成输出,并:start_response('200 OK', Headers)
return [content]
一个简单的WSGI应用程序可能如下所示:
强烈建议您使用现有的WSGI框架,因为在解析HTTP请求、处理文件上载、编码字符等方面有很多细节。。。
看看瓶子、烧瓶、werkzeug、AppStruct等。。。
mod_wsgi
是一个与wsgi兼容的python模块,它连接python和apache。它允许您在apache下运行根据wsgi规范编码的应用程序。werkzeug
是一个wsgi实用程序库,用于构建符合wsgi的应用程序。它附带了一个开发服务器。有一些Python Web应用程序框架:Pyramid/Pylons、Flask、Bottle、Django、CherryPy等,它们都实现了WSGI规范,这是用Python构建Web应用程序的事实标准(http://en.wikipedia.org/wiki/Web_Server_Gateway_Interface)
大多数web应用程序框架都附带了一个仅用于调试或支持生产的web服务器。当您有一个WSGI应用程序时,您可以通过库的应用程序、通过Apache通过
mod_wsgi
提供服务,或者使用像uWSGI
、gunicorn
、fapws
或twisted
这样的“纯”WSGI服务器。我认识的大多数人都会部署这样的wsgi应用程序:
话虽如此,为了明确回答您的问题,请阅读本文档第-http://werkzeug.pocoo.org/docs/serving/页的第一段:
出于开发原因,或者在流量非常低的站点上,您可以只使用Werkzeug服务器。如果您部署的应用程序将获得合理的通信量,则需要更健壮的应用程序。
modòu wsgi或uWSGI复制了Werkzeug的服务特性,但它们之所以这样做是因为它们可以做得更好——更快的响应时间、更低的内存、更好的并发性、更稳定等。Werkzeug服务器对于许多用途来说“足够好”,但它不是服务于wsgi兼容应用程序的“最佳方式”。
相关问题 更多 >
编程相关推荐