擅长:python、mysql、java
<p>这个答案适用于Django和Flask(以及所有其他Python wsgi框架,AFAIK):</p>
<p>像Flask和Django这样的应用程序都带有一个轻量级的内置web服务器,它将在您开发时帮助您。它们是功能齐全的HTTP服务器,理论上可以在生产中使用。但你不应该。在</p>
<p>您不应该这样做的原因是这些服务器往往非常基本,单线程,而且非常简单。从开发的角度来看,这是一件好事,因为您不必担心安装这个、那个和其他。另外,他们可能会做一些漂亮的事情,比如当你做出改变时,为你重新加载你的应用程序。在</p>
<p>但他们只希望一个用户一次触摸页面。你,开发者。在</p>
<p>这不是你在生产中想要的。在</p>
<p>在生产环境中,您需要一个能够通过线程(但是<a href="https://en.wikipedia.org/wiki/Slowloris_(software)" rel="nofollow">probably not</a>)或reactor模式每秒处理数千个请求的web服务器。您不希望web服务器在处理长时间运行的查询或文件上载时停止响应其他请求。这就是像Gunicorn或Tornado这样的服务器——它们允许一次发生大量连接,并且它们能够处理Django/Flask/Bottle/CherryPy/等应用程序与整个互联网之间的通信。这是件好事。在</p>
<p>从内置的wsgi服务器和gunicorn/tornado或任何可以运行wsgi应用程序的东西进行交换的过程应该是一个复杂的过程。这就是wsgi层的全部要点。在</p>
<p>如果在转换过程中遇到问题,要么您的理解有问题,要么您的应用程序配置错误。这两个问题都是SO社区可以帮助解决的,而且可能有一些问题已经解决了大多数更常见的场景。在</p>