rmarkdown::render() 不允许同时有多个用户?
Posted
技术标签:
【中文标题】rmarkdown::render() 不允许同时有多个用户?【英文标题】:rmarkdown::render() doesn't allow multiple users at the same time? 【发布时间】:2019-08-21 03:52:15 【问题描述】:我有一个闪亮的应用程序,它通过操作按钮呈现 html 报告。渲染完成后,屏幕上会显示一个下载按钮,以便可以下载该操作按钮的结果。我不得不创建这两个单独的按钮,因为下载处理程序似乎有一个超时,所以由于我的 Rmd 文件需要更长的时间来呈现,它不会工作,它会在服务器中引发错误。
我目前正在渲染我的 Rmd,如下所示:
rmarkdown::render(tempReport, output_file = tmp_file,
params = params,
envir = new.env(parent = globalenv()))
问题是:如果一个用户在服务器中呈现他/她的报表,如果第二个用户同时点击操作按钮来呈现它,只有在第一个用户完成后才会开始呈现。
有没有人可以解决这个问题?
【问题讨论】:
【参考方案1】:您观察到的行为是 R 是单线程的事实的结果。您的问题的直接答案是您需要实现异步方法以允许多个 render()
进程同时运行。更多信息请访问:https://rstudio.github.io/promises/。
如果您不想走异步路径,并且有合理数量的可能报表变体,您可以预渲染输出并让用户简单地打开选定的输出而不是按需渲染。
【讨论】:
以上是关于rmarkdown::render() 不允许同时有多个用户?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 rmarkdown::render 函数调用 rmdformat 主题?
为啥 ggplotly 在 rmarkdown 中不能像 ggplot 一样工作