带有 Gunicorn 的 Dash 应用程序无法在 Cloud Run 中启动

问题描述 投票:0回答:1

我在 GCP Cloud Run 中部署了一个 Python Dash 应用程序,用于报告和分析。该应用程序的工作方式与在本地一样,将其放在 GCR 中允许多个用户同时访问并实施一些云解决方案。开始发生的事情是,当多个用户同时访问该应用程序时,就会出现性能和延迟问题。据我了解,Dash 建议在应用程序中使用 Gunicorn,以便进行性能调整和管理工作人员实施。我从来没有使用过它,所以我的知识很低。

根据一些示例和文档,我尝试实现它。它看起来“并不”复杂。

# Dash version 2.9.1
app = dash.Dash(__name__)
server = app.server

app.layout = *app layout code*

*app callbacks code*

if __name__ == "__main__":
   app.run_server(host="0.0.0.0", port="8060")

将 Dockerfile 应用程序执行更改为:

CMD ["python", "main.py"]

致:

CMD ["gunicorn", "-w", "3", "-b", "0.0.0.0:8060", "main:server"]

Cloud Run 的部署进展顺利,Cloud Build 和 Cloud Run 都没有出现错误。但查看 Cloud Run Logs,它是这样写的: Cloud Run Logs #1 Cloud Run Logs #2

它一直持续下去......

据我了解,这与我的 GCR 部署中的最小实例(1 分钟实例)和 Gunicorn 关闭并重新启动有关(这是正确的吗?)应该避免这种情况吗?或者可以吗?除了最小实例之外,它还消耗资源吗?

另一件事是,除了这些日志之外,我还决定测试该应用程序。但是,当访问应用程序的 DNS 时,浏览器在加载到应用程序时会停留在当前页面。没有白页,没有错误,只有选项卡名称上的“正在加载”消息,就是这样。我等了 5 分钟,但什么也没有。在实施 Gunicorn 之前,我能够立即访问该应用程序。

有谁知道这里发生了什么吗?如果我做错了什么? (我肯定正在这样做)

python google-cloud-platform plotly-dash gunicorn google-cloud-run
1个回答
0
投票

您在日志中显示的 SIGKILL 之前是否有 SIGTERM?如果是,您可以让您的应用程序处理该信号(方法如下)。

我认为不可能像评论中建议的那样有无限超时。超时值默认设置为 5 分钟,最多可延长至 60 分钟(来源)。

我建议您检查服务的内存使用情况并相应更新限制。这是官方的公式可以帮助您。

© www.soinside.com 2019 - 2024. All rights reserved.