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 一样工作

在查看器窗格中打开 R Markdown

当参数相同时锁定程序不运行,但在参数不同时允许运行

为啥 Oracle 不允许您使用相同的列同时创建主键和唯一约束?

pandoc有时无法找到utf8.md文件