ERROR: (gcloud.app.deploy) Error Response: [9] Flex operation projects/.../regions/us-central1/operations/... error [FAILED_PRECONDITION]

ERROR: (gcloud.app.deploy) Error Response: [9] Flex operation projects/.../regions/us-central1/operations/... error [FAILED_PRECONDITION]

我是 Google Cloud 的新手,我只是想部署我的第一个 streamlit webapp。我在命令行中使用 Windows。我已经完成了 Google 云“Hello World”示例,没有任何错误。

当我部署 streamlit webapp 时,在等待“更新服务器”3-4 分钟后出现以下错误:

ERROR: (gcloud.app.deploy) Error Response: [9] Flex operation projects/XXXX/regions/us-central1/operations/f0c89d22-2d09-410d-bf99-fc49ad337800 error [FAILED_PRECONDITION]: An internal error occurred while processing task /app-engine-flex/flex_await_healthy/flex_await_healthy>2021-05-27T06:13:50.278Z10796.jc.0: 2021-05-27 06:15:32.787 An update to the [server] config option section was detected. To have these changes be reflected, please restart streamlit.

那是我的 app.yaml 文件:

service: default
runtime: custom
env: flex
manual_scaling: 
  instances: 1
resources:
  cpu: 1
  memory_gb: 0.5
  disk_size_gb: 10

对于不熟悉的人,最好在问题中包含参考资料,例如精简。我假设是这样的:https://streamlit.io/

我怀疑 (!) Streamlit 不(默认情况下)满足 App Engine 的要求:

  1. 端口 8080 上的 Web 应用程序
  2. 没有额外的(apt get)依赖项
  3. 没有基于 C 的依赖项

Streamlit wiki 引用了各种 deployment alternatives 并包括 Google Kubernetes Engine(又名 GKE)(见下文)但不包括 App Engine。

这并不意味着它不能在 App Engine(标准)上运行,只是它可能不是微不足道的。

GKE 说明提到安装 Cython 一个优化的 c 编译器,这让我暂停使用 App Engine 标准。除非您熟悉 Kubernetes,否则我不建议您尝试 GKE,因为它更复杂。

因此,如果其他有 Streamlit 经验的人参与进来会很有帮助,但在此之前,您可能希望考虑使用 Streamlit sharing

如果已经将 Streamlit 部署到 App Engine(灵活?)或者 Cloud 运行 的人可以提供概述,那将会很有帮助。

张贴我的评论作为答案以获得更好的可见性和总结。

在这种特殊情况下,错误是由 Dockerfile 中的错误引起的。

您可以按照以下步骤修复或缩小错误范围:

  • 尝试部署测试应用以查看配置差异。 Example.
  • 使用 gcloud components update 命令更新 gcloud 后尝试部署您的应用程序。
  • 确保您 运行 SDK 作为管理员。
  • 如果错误再次出现,运行 gcloud app deploy app.yaml --verbosity=debug 尝试获取更多指定的错误。