为了账号安全,请及时绑定邮箱和手机立即绑定

WSGI服务器和HTTP服务器是否需要服务于Flask应用程序?

WSGI服务器和HTTP服务器是否需要服务于Flask应用程序?

慕后森 2019-06-05 16:27:48
WSGI服务器和HTTP服务器是否需要服务于Flask应用程序?使用uWSGI和Nginx设置Flask是相当困难的,即使使用构建脚本,也需要相当长的时间,并且必须将其记录到指令中,以便稍后复制。如果我没有计划在服务器上加载大量负载(这是对公众隐藏的),那么在没有uWSGI的情况下运行它是否有意义呢?(烧瓶可以听一个端口。Nginx可以直接转发请求吗?)即使是Nginx,也不用在端口上运行裸露的烧瓶应用程序,这有意义吗?
查看完整描述

2 回答

?
临摹微笑

TA贡献1982条经验 获得超2个赞

当您“运行Flask”时,您实际上是在运行Werkzeug的开发WSGI服务器,并将您的Flask应用程序作为WSGI可调用的。

开发服务器不打算用于生产。它的设计并不是特别高效、稳定或安全。

将Werkzeugdev服务器替换为生产就绪的WSGI服务器,如Gunicorn或uWSGi,无论该应用程序在哪里可用。


答案类似于“我是否应该使用Web服务器”。WSGI服务器碰巧有HTTP服务器,但它们不如专用的生产HTTP服务器(Nginx、Apache等)好。


烧瓶文件如何以各种方式部署。许多托管提供商也有关于部署Python或Flask的文档。


查看完整回答
反对 回复 2019-06-05
?
慕丝7291255

TA贡献1859条经验 获得超6个赞

想必您已经有了一个Flask应用程序对象并设置了路由,但是如果您像这样创建应用程序:

import flask

app = flask.Flask(__name__)

然后设置你的@app.route()S,然后当您想启动应用程序时:

import gevent

app_server = gevent.wsgi.WSGIServer((host, port), app)app_server.serve_forever()

然后,您可以直接运行您的应用程序,而不必告诉gunicorn或uWSGI或其他任何东西来为您运行它。

我有一个例子,我想要用烧瓶来构建一个Web应用程序(一个RESTAPI服务),并且发现无法与其他非烧瓶、非Web服务元素组合水瓶是一个问题。我最终发现gevent.wsgi.WSGIServer这正是我所需要的。在打电话到app_server.serve_forever(),你可以打电话app_server.stop()当你的应用程序想退出的时候。

在我的部署中,我的应用程序正在侦听localhost:使用烧瓶和gEvent,然后在另一个端口上有nginx反向代理HTTPS请求,并将它们转发到本地主机上的烧瓶服务。


查看完整回答
反对 回复 2019-06-05
  • 2 回答
  • 0 关注
  • 791 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信