2

我有一个闪亮的应用程序,带有 Shiny Server(开源版本),使用 docker 容器化,部署到 AWS Fargate。该应用程序相当基本,因为它做了三件事:

  1. 接受用户输入并根据该输入从谷歌分析中检索数据;
  2. 通过.Rmd文件处理这些数据;
  3. 提供.pdf输出以供下载。

在本地运行时(使用runApp()或使用docker run --rm -p 3838:3838 [image]),应用程序可以正常运行。当部署到 AWS Fargate 时(在确定了一些部署问题之后),我认为该应用程序遇到了与“健康检查”相关的问题。这些问题出现了,我相当肯定,因为上面的第 2 步可能需要几分钟(并生成一个多 Mb 大小的.pdf报告)。该应用程序变灰,出现503 Service Temporarily Unavailable错误,几分钟后,重新加载页面后似乎恢复正常。

我可以编辑健康检查,以便在 AWS EC2 认为我的容器“不健康”(基于 Shiny 服务器的无响应)之前留出更多时间,但这绝对不是软件开发的最佳实践(根据我组织中的软件开发人员) .

有没有办法让开源 Shiny Server 上的长时间运行的 Shiny 应用程序处理R逻辑,同时还允许进行健康检查?我认为这本质上是让 Shiny 服务器“部分唤醒”以监听健康检查,同时R在后台运行任何东西。

我怀疑这是不可能的,因为R它本身是单线程的,并且只有Shiny Server PRO 版本允许运行状况检查端点

4

0 回答 0