注意:这个问题是作为一个副本关闭的,但它不是(不是问题)。 我特别描述了一个应用程序在Web模式下,然后在WSGI模式 - 我毫不怀疑要使用什么时候(两个链接的问题解决这一点)。我还解释说,我很清楚Web服务器的用途。 接受的答案对此作了很好的总结,并回答了Web服务器是否是运行prod flask应用程序的要求(不是)。在瓶部署中使用Web服务器有什么用途?
我有一个flask
应用程序。开发版,with all its limitations,是
import flask
app = flask.Flask(__name__)
@app.route("/")
def hello():
return "Hello World!"
app.run()
当我想将它移动到生产,我用gevent
,per the deployment documentation:
import gevent.monkey
gevent.monkey.patch_all()
import flask
import gevent.wsgi
app = flask.Flask(__name__)
@app.route("/")
def hello():
return "Hello World!"
gevent.wsgi.WSGIServer(('127.0.0.1', 5000), app).serve_forever()
两种情况下工作,与第一个偶尔有问题(这是并非意外,由于其性质)。
然后,我在这里和那里读到的很多信息都提到,flask
应用程序的生产部署的第三个组件是Web服务器(Apache,nginx)。 WSGI启用的烧瓶应用的实际用途是什么?
具体而言,我想了解它是否对烧瓶应用的性能/稳定性有实际影响。
我知道一个web服务器的各种用法(认证,反向代理,白名单,重写,负载管理和其他许多)。我的问题具体是关于Web服务器为烧瓶WSGI应用(如果有的话)提供的。
使用Flask,您可以构建您的Web应用程序。 WSGI是应用程序遵循的由WSGI服务器托管的接口。 gevent是一个WSGI服务器,可以托管你的应用程序。通常情况下,您需要在其前端放置一个完整的Web服务器(nginx或apache)作为*反向代理*,以获得现代Web服务器提供的全部功能,而无需中间WSGI服务器自己提供这些功能。这使得一切都变得简单和容易推理。 – poke
@poke:*获得现代Web服务器提供的全部功能,而不需要中间的WSGI服务器自己提供这些功能。*您是否提到了我在问题中提到的一些功能?换句话说,如果我想让我的网络服务器回复'Hello World'(当然是服务器的容量 - 但这不会被web服务器改进,但是使用速率限制或类似的东西)'' gevent'服务器是正确的选择?我试图理解,如果选择是二进制的:开发dev的服务器,产品的'gevent',然后可能一些额外 – WoJ
@poke(续)...一个web服务器的舒适功能('gevent'只是一个WSGI服务器的示例) – WoJ