<p><code>mod_wsgi</code>是一个与wsgi兼容的python模块,它连接python和apache。它允许您在apache下运行根据wsgi规范编码的应用程序。</p>
<p><code>werkzeug</code>是一个wsgi实用程序库,用于构建符合wsgi的应用程序。它附带了一个开发服务器。</p>
<p>有一些Python Web应用程序框架:Pyramid/Pylons、Flask、Bottle、Django、CherryPy等,它们都实现了WSGI规范,这是用Python构建Web应用程序的事实标准(<a href="http://en.wikipedia.org/wiki/Web_Server_Gateway_Interface" rel="noreferrer">http://en.wikipedia.org/wiki/Web_Server_Gateway_Interface</a>)</p>
<p>大多数web应用程序框架都附带了一个仅用于调试或支持生产的web服务器。当您有一个WSGI应用程序时,您可以通过库的应用程序、通过Apache通过<code>mod_wsgi</code>提供服务,或者使用像<code>uWSGI</code>、<code>gunicorn</code>、<code>fapws</code>或<code>twisted</code>这样的“纯”WSGI服务器。</p>
<p>我认识的大多数人都会部署这样的wsgi应用程序:</p>
<ul>
<li>像nginx这样的轻量级服务器监听port80</li>
<li>轻量级服务器本身提供静态文件</li>
<li>轻量级服务器将uWSGI请求代理到另一个服务器,通常是uWSGI,但有时是apache+mod_wsgi或其他服务器。根据设置,代理可以是http代理,也可以直接或通过套接字连接到uWSGI服务器。</li>
</ul>
<p>话虽如此,为了明确回答您的问题,请阅读本文档第-<a href="http://werkzeug.pocoo.org/docs/serving/" rel="noreferrer">http://werkzeug.pocoo.org/docs/serving/</a>页的第一段:</p>
<blockquote>
<blockquote>
<p>There are many ways to serve a WSGI application. While you’re developing it, you usually don’t want to have a full-blown webserver like Apache up and running, but instead a simple standalone one. Because of that Werkzeug comes with a builtin development server.</p>
</blockquote>
</blockquote>
<p>出于开发原因,或者在流量非常低的站点上,您可以只使用Werkzeug服务器。如果您部署的应用程序将获得合理的通信量,则需要更健壮的应用程序。</p>
<p>modòu wsgi或uWSGI复制了Werkzeug的服务特性,但它们之所以这样做是因为它们可以做得更好——更快的响应时间、更低的内存、更好的并发性、更稳定等。Werkzeug服务器对于许多用途来说“足够好”,但它不是服务于wsgi兼容应用程序的“最佳方式”。</p>