rmarkdown :: render()不允许同时有多个用户吗?

时间:2019-03-30 10:18:05

标签: r shiny r-markdown shiny-server

我有一个闪亮的应用程序,可以通过操作按钮呈现HTML报告。渲染完成后,屏幕上将显示一个下载按钮,以便可以下载该操作按钮的结果。我必须创建这两个单独的按钮,因为下载处理程序似乎有超时,因此,由于我的Rmd文件需要更长的渲染时间,因此无法正常工作,并且会在服务器中引发错误。

我目前正在渲染我的Rmd,如下所示:

rmarkdown::render(tempReport, output_file = tmp_file,
                              params = params,
                              envir = new.env(parent = globalenv()))
  

问题是:如果一个用户正在服务器中呈现他/她的报告,而第二个用户单击操作按钮以同时呈现它,则它将仅在第一个用户完成后才开始呈现。

>

有人对此有任何解决方案吗?

1 个答案:

答案 0 :(得分:1)

您正在观察的行为是R是单线程事实的结果。问题的直接答案是,您需要实现异步方法以允许多个render()进程同时运行。有关更多信息,请访问https://rstudio.github.io/promises/

如果您不想沿异步路径前进,并且有相当数量的可能的报表变体,则可以预呈现输出,并让用户简单地打开选定的输出,而不是按需呈现。 / p>