【问题标题】:rmarkdown::render() doesn't allow multiple users at the same time?rmarkdown::render() 不允许同时有多个用户?
【发布时间】:2019-08-21 03:52:15
【问题描述】:

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

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

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

问题是:如果一个用户在服务器中呈现他/她的报表,如果第二个用户同时点击操作按钮来呈现它,只有在第一个用户完成后才会开始呈现。

有没有人可以解决这个问题?

【问题讨论】:

    标签: r shiny r-markdown shiny-server


    【解决方案1】:

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

    如果您不想走异步路径,并且有合理数量的可能报表变体,您可以预渲染输出并让用户简单地打开选定的输出而不是按需渲染。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-05
      • 2019-02-05
      • 2017-03-21
      • 1970-01-01
      • 2019-05-18
      • 2018-09-16
      相关资源
      最近更新 更多