哪个生产服务器用于 Cloud Run 中的 Python 应用程序?

Posted

技术标签:

【中文标题】哪个生产服务器用于 Cloud Run 中的 Python 应用程序?【英文标题】:Which production server to use for Python applications in Cloud Run? 【发布时间】:2020-01-06 05:09:13 【问题描述】:

我想使用 GCP cloud run 作为一种技术来运行我的 python flask 应用程序,所以我必须对其进行 docker 化。我见过的大多数示例要么使用内置的烧瓶服务器或 gunicorn 服务器作为 ENTRYPOINT,它在控制台上发出警告,它不应该在生产中使用。

我的问题是:对于像 GCP 云运行 这样的平台,我使用哪个服务器来运行该代码是否重要?该选择会对性能产生什么影响?

【问题讨论】:

【参考方案1】:

您需要 gunicorn,并且需要正确配置它。

    在这些设置中,通常会有一个外部 HTTP 服务器代理对您服务器的请求。因此,您在后端使用哪个网络服务器并不重要,因为它不是直接暴露的。

    话虽如此,内置的 Flask 网络服务器并不理想,所以 gunicorn 可能会更好。您需要稍微调整 Gunicorn 的设置以在容器中正常工作:日志记录、心跳设置和并行性。

详情请见https://pythonspeed.com/articles/gunicorn-in-docker/。

【讨论】:

+1。 Gunicorn 正确地利用 Python 中的多个进程/线程来运行您的应用程序。像 Go 这样的语言不需要这样的外部服务器。但是,Gunicorn 是 Python 的生产就绪型解决方案。然后,您可以在 Cloud Run 上将 --concurrency 配置为 gunicorn 可以轻松处理容器中给定 CPU/内存的值。

以上是关于哪个生产服务器用于 Cloud Run 中的 Python 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

在一个 GCP 项目中来自 Cloud Run 应用的 HTTP 503 错误,但在另一个项目中没有

为啥 Google Cloud Messaging 通知不适用于 iPhone 生产环境?

如何为 Cloud Build 用于 Cloud Run 部署的 Cloud Storage 存储分区指定区域?

Cloud Run PubSub 高延迟

从 Google Cloud Run 服务中的 docker 容器到 Google Cloud SQL 的请求最多需要 2 分钟

与 GKE 中的普通服务相比,运行 Cloud Run 的价值主张是啥?