我有一个闪亮的应用程序,可以通过操作按钮呈现HTML报告。渲染完成后,屏幕上将显示一个下载按钮,以便可以下载该操作按钮的结果。我必须创建这两个单独的按钮,因为下载处理程序似乎有超时,因此,由于我的Rmd文件需要更长的渲染时间,因此无法正常工作,并且会在服务器中引发错误。
我目前正在渲染我的Rmd,如下所示:
rmarkdown::render(tempReport, output_file = tmp_file,
params = params,
envir = new.env(parent = globalenv()))
问题是:如果一个用户正在服务器中呈现他/她的报告,而第二个用户单击操作按钮以同时呈现它,则它将仅在第一个用户完成后才开始呈现。
>
有人对此有任何解决方案吗?
答案 0 :(得分:1)
您正在观察的行为是R是单线程事实的结果。问题的直接答案是,您需要实现异步方法以允许多个render()
进程同时运行。有关更多信息,请访问https://rstudio.github.io/promises/。
如果您不想沿异步路径前进,并且有相当数量的可能的报表变体,则可以预呈现输出,并让用户简单地打开选定的输出,而不是按需呈现。 / p>