我在 RStudio 的免费闪亮服务器上有一个闪亮的应用程序,它使用大量的库,这导致计算时间很慢。UI 加载时间是可以接受的。我将这些库放在 global.R 文件中,以便可以在用户之间共享。
# All libraries are in global.R for faster start times
source("<path to global.R>", local = T)
ui <- fluidPage(
)
server <- function(input, output, session) {
}
shinyApp(ui, server)
Run Code Online (Sandbox Code Playgroud)
通过此设置,第一个从浏览器访问应用程序的人需要等待很长时间(约 10 秒)才能进行第一次计算。该用户后续的计算以及不同用户的访问都很快。如果每个人都关闭浏览器,下一个用户将等待约 10 秒的时间让应用程序进行计算。
有没有一种方法可以进行配置,以便即使第一个用户也有很短的等待时间,因为库已经在内存中了?
我认为我正在寻找的结果就好像我一直打开一个浏览器选项卡指向我的公共闪亮应用程序,然后我点击重新加载并计算一次(添加用户界面启动时未添加的库) 。每当应用程序超时并变成灰色时,我都会重新加载并再次计算。
小智 0
一个潜在的选择可能是使用 app_idle_timeout 闪亮服务器配置选项并将其设置为 0。这意味着在第一次运行后,该进程将永远不会被终止,因此不必再次运行。
来自管理员指南:
每个闪亮的应用程序都有两个与之关联的超时:
app_init_timeout——描述等待应用程序启动的时间量(以秒为单位)。经过指定的秒数后,如果R进程仍未响应,则将被视为启动不成功,并关闭连接。app_init_timeout 的默认值为 60 秒。
app_idle_timeout -- 定义没有活动连接的 R 进程应保持打开状态的时间量(以秒为单位)。 在最后一个连接与 R 进程断开连接后,该计时器将启动,在指定的秒数后,如果没有创建新连接,则 R 进程将被终止。app_idle_timeout 的默认值为 5 秒。将 app_idle_timeout 设置为 0 将禁用应用程序空闲超时。
通常,这两个参数是相关的。启动时涉及很少处理的闪亮应用程序(因此具有较小的 app_init_timeout)通常可以在很少关注的情况下关闭(因此将具有较小的 app_idle_timeout)。相反,需要在启动时加载大量数据的应用程序可能需要更长的 app_init_timeout 来为数据提供加载时间,并且需要更长的 app_idle_timeout ,因为生成新进程的任务成本更高,应该最小化。