我正在 EDP 服务器上使用 rocker/shiny:4.2.2 图像运行闪亮的应用程序。 这个闪亮的应用程序使用了多种 future.apply 功能,并通过 progressr 进度条显示进度。
withProgressShiny(
message = "Collecting results ",
detail = "initialization",
{
p <- progressor(steps = 100)
counter = 0
while(counter < 100){
counter=counter+1
p(message = "searching")
}
})
进度条在我的本地计算机上与不同的 future::plan(顺序、多会话、多核)配合得非常好,但没有在服务器上运行。服务器仅在整个 while 循环期间显示进度器函数的“初始化”部分,但不显示“搜索”部分。
会话信息显示所有使用的软件包的相同版本,包括 R 版本。
似乎是progressor()的问题,但不是withProgressShiny()部分的问题。
有什么建议如何解决这个问题吗?
我在 Progressr 包的基础知识中找到了问题的解决方案:
EDP 服务器上的 R 会话是非交互式的,因此
interactive()
FALSE
progressr 包默认需要交互式会话。通过主动设置
progressr.enable = TRUE
在图像的 R 选项中,我克服了这个问题,一切正常。