我在 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,它是这样写的:
它一直持续下去......
据我了解,这与我的 GCR 部署中的最小实例(1 分钟实例)和 Gunicorn 关闭并重新启动有关(这是正确的吗?)应该避免这种情况吗?或者可以吗?除了最小实例之外,它还消耗资源吗?
另一件事是,除了这些日志之外,我还决定测试该应用程序。但是,当访问应用程序的 DNS 时,浏览器在加载到应用程序时会停留在当前页面。没有白页,没有错误,只有选项卡名称上的“正在加载”消息,就是这样。我等了 5 分钟,但什么也没有。在实施 Gunicorn 之前,我能够立即访问该应用程序。
有谁知道这里发生了什么吗?如果我做错了什么? (我肯定正在这样做)