使用Gunicorn + Nginx + Flask会带来什么好处?

KJW*_*KJW 40 python nginx flask gunicorn

我看到人们正在运行像Nginx + Gunicorn + Flask这样的设置.

有人可以解释在Flask面前拥有Gunicorn的好处是什么?为什么不单独运行Flask?是不是消耗了更多的资源让Gunicorn + Flask运行?Gunicorn是否能够在无法响应时重启Flask实例?

将nginx放在gunicorn之上的目的是什么?枪炮不够吗?再次,花费更多的资源?

Jon*_*Jon 42

我想你可能会感到困惑,Flask不是一个Web服务器,它是一个框架,需要某种Web服务器,如Gunicorn,Nginx或Apache,来接受它随后会运行的HTTP请求.人们将Nginx和Gunicorn组合在一起的原因是,除了作为一个Web服务器之外,Nginx还可以代理与Gunicorn的连接,这带来了一定的性能优势,这是一个非常好的答案,详细说明了这些好处: https:// serverfault. COM /问题/ 220046 /为什么-是-设定- nginx的,作为一种反向代理-A-好主意

编辑: 添加了包含有关运行Nginx作为代理的性能优势的信息的链接.

  • 如果 Flask 本身不是 Web 服务器,它是否附带一些基本的 Web 服务器,以便我们可以启动它并通过 HTTP(默认端口 5000)访问它,[docs](http://flask.pocoo.org /docs/0.10/api/#flask.Flask.run)?尽管一开始他们提到“flask 对象实现了 WSGI 应用程序”,但是 WSGI 应用程序可以直接和可选地通过来自 Web 服务器的代理传递来与 HTTP 通信吗?[这个](http://www.fullstackpython.com/wsgi-servers.html) 谈到 WSGI 服务器... (5认同)
  • Ahaa在[部署选项](http://flask.pocoo.org/docs/0.10/deploying/)中提到"您可以在开发期间使用内置服务器,但您应该为生产应用程序使用完整部署选项". (4认同)
  • 是的,默认情况下使用Werkzeug wsgi服务器,尽管没有Gunicorn服务器那么高效,但它很容易成为一个很好的测试和登台服务器. (2认同)