在Google Kubernetes引擎中运行Blask Web应用程序



在网络上,大部分教程和文档都在开发状态下运行。在开发模式下看起来像这样的日志:

* Serving Flask app "app" (lazy loading)
 * Environment: production
   WARNING: Do not use the development server in a production environment.
   Use a production WSGI server instead.
 * Debug mode: on
 * Running on http://0.0.0.0:5555/ (Press CTRL+C to quit)

我想进一步了解如何使其准备就绪。我也看到了使用Ready WSGI服务器和nginx的生产文档作为前面的反向代理。但是有人可以告诉我为什么需要WSGI和反向代理?

如果我的烧瓶应用程序已停靠并在Google Kubernetes引擎中运行,甚至有必要吗?GKE不会照顾WSGI和反向代理的目的?

作为烧瓶的文档说明:

烧瓶的内置服务器不适合生产

为什么要WSGI?这是部署Python Web应用程序的标准方法,在选择服务器时为您提供了选项(即,您可以在不更改应用程序的情况下选择最适合您的应用程序/工作流程),并且它允许向服务器卸载缩放率关注。

为什么要反向代理?这取决于服务器。这是枪支的理由:

...我们强烈建议您使用nginx。如果选择另一台代理服务器,则需要确保在使用默认的Gunicorn工人时,它可以缓冲客户端。没有这种缓冲枪支,很容易遭受拒绝服务的攻击。

这是女服务员的理由:

通常,人们会在反向代理后面设置"纯Python" Web服务器,尤其是如果他们需要TLS支持(女服务员不在本地支持TLS)。即使您不需要TLS支持,也不少见地看到女服务员和其他纯Python Web服务器设置以仅处理反向代理后面的请求。这些代理通常有很多有用的部署旋钮。

反向代理的其他实际原因可能包括需要用于多个后端的反向代理(其中一些可能不是python web应用程序),缓存响应和服务静态内容(nginx,nginx,nginx,nginx,nginx例如,恰好擅长)。并非所有的WSGI服务器都需要反向代理:UWSGI和Cherrypy将其视为可选的。

P.S。Google App Engine似乎是符合WSGI的,并且不需要任何其他配置。