Python web服务器在flask部署中的用途是什么?

Python web服务器在flask部署中的用途是什么?,python,python-3.x,flask,gevent,Python,Python 3.x,Flask,Gevent,注意:该问题已作为副本关闭,但它不是(两个问题中的一个)。 我在web模式下特别描述了一个应用程序,然后在WSGI模式下描述了一个应用程序——我毫不怀疑何时使用哪个应用程序(两个链接问题都解决了这一点)。我还解释说,我很清楚web服务器的用途。 公认的答案很好地概括了这一点,并回答了运行prod flask应用程序是否需要web服务器的问题(事实并非如此) 我有一个烧瓶应用程序。开发版本是 当我想将其转移到生产环境时,我使用gevent,: 这两种情况都有效,第一种情况偶尔会出现问题(由于其性质

注意:该问题已作为副本关闭,但它不是(两个问题中的一个)。 我在web模式下特别描述了一个应用程序,然后在WSGI模式下描述了一个应用程序——我毫不怀疑何时使用哪个应用程序(两个链接问题都解决了这一点)。我还解释说,我很清楚web服务器的用途。 公认的答案很好地概括了这一点,并回答了运行prod flask应用程序是否需要web服务器的问题(事实并非如此)

我有一个
烧瓶
应用程序。开发版本是

当我想将其转移到生产环境时,我使用
gevent
,:

这两种情况都有效,第一种情况偶尔会出现问题(由于其性质,这并非意外)

然后,我在这里和那里读到的很多信息都提到了
flask
应用程序生产部署的第三个组件是web服务器(Apache、nginx)。它对支持WSGI的flask应用程序的实际用途是什么

具体而言,我想了解它是否对烧瓶应用程序的性能/稳定性有实际影响。


我知道Web服务器的各种用途(身份验证、反向代理、白名单、重写、负载管理等)。我的问题是关于Web服务器为WSGI应用程序提供了什么(如果有的话)

使用Flask,您可以构建web应用程序。WSGI是应用程序遵循的由WSGI服务器托管的接口。gevent是一个WSGI服务器,可以承载您的应用程序

通常,您会将一个成熟的web服务器(例如nginx或apache)作为反向代理放在它前面,以获得现代web服务器通常提供的全部功能,而中间WSGI服务器不必自己提供这些功能。这使得一切变得更简单、更容易推理,因为每个组件都可以专注于它最擅长的功能(WSGI服务器的工作就是只托管您的应用程序)

Flask附带的dev服务器是一个在单个进程中运行的非常简单的服务器。它用于此,也明确提到不应用于生产:

开发服务器不用于生产系统。它是专门为开发目的而设计的,在高负载下性能很差。有关部署设置,请查看页面


因此,您可以使用“真正的”WSGI服务器来托管您的应用程序;然后,它将执行任何必要的操作来正确运行应用程序。不过WSGI服务器仍然相当简单;您将另一台web服务器作为反向代理放在前面,以访问使web服务器真正强大的功能(例如负载平衡、缓存、SSL终止等)。

使用Flask,您可以构建web应用程序。WSGI是应用程序遵循的由WSGI服务器托管的接口。gevent是一个WSGI服务器,可以承载您的应用程序。通常,您会将一个成熟的web服务器(nginx或apache)作为反向代理放在它前面,以获得现代web服务器提供的全部功能,而中间WSGI服务器不必自己提供这些功能。这使一切变得更简单、更容易推理。@poke:为了获得现代web服务器提供的全部功能,而中间WSGI服务器不必自己提供这些功能。你是指我在问题中提到的一些特征吗?换句话说,如果我想让我的Web服务器回复
Hello World
(当然是服务器的容量-但如果不使用速率限制或类似的方法,Web服务器不会提高容量),
gevent
服务器是正确的选择?我试图了解选择是否是二进制的:dev服务器用于dev,
gevent
用于prod,然后可能是一些extra@poke(续)。。。Web服务器的舒适特性(
gevent
只是WSGI服务器的一个示例)dev服务器仅限于一个进程,因此不适合生产。这就是为什么要使用WSGI服务器来托管应用程序;然后,它将执行任何必要的操作来正确运行应用程序。不过WSGI服务器仍然相当简单;您将另一个web服务器作为反向代理放在前面,以访问使web服务器真正强大的功能(例如负载平衡、缓存、SSL终止)@poke:好的,这很清楚(与我的想法一致)。如果您不介意将您的评论复制/粘贴到答案中,我将很乐意接受。谢谢
import flask

app = flask.Flask(__name__)

@app.route("/")
def hello():
    return "Hello World!"

app.run()
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()