R Shiny在不同的过程中运行任务/脚本

Taz*_*Taz 6 parallel-processing asynchronous r shiny officer

在我的Shiny应用程序中,用户可以生成重型powerpoint报告.当它包含大量幻灯片时,可能需要30分钟才能完成.因此,我希望在独立的流程/任务中处理这些任务,即使应用程序关闭也可以工作 - 例如,用户单击按钮生成报告,关闭应用程序,报告准备好时,应用程序通过电子邮件通知用户.是否有任何良好做法或经过验证的解决方案?

我的第一个想法是使用future套装plan(multisession)- 但我不确定当用户关闭应用程序时会发生什么 - future会话关闭或不关闭?

Lyz*_*deR 10

我很幸运能够在本周参加伦敦EARL,我认为我在那里看到的最好的演讲之一就是(Joe Cheng).你需要promises包来实现这一点,正如文档中所说的devtools::install_github("rstudio/shiny@async")那样,支持异步编程的特殊版本的光亮.

您可以通过使用和(也兼容)在此处找到有关其工作原理的第一个文档.dplyrpromisesfuture

作为一个小例子(取自文档),使用以下方法运行密集计算:

read.csv.async("data.csv") %...>%
  filter(state == "NY") %...>%
  arrange(median_income) %...>%
  head(10) %...>%
  View()
Run Code Online (Sandbox Code Playgroud)

本质上会返回控制台光标,允许您运行所需的任何其他命令,并View在完成后自动打开选项卡.我可能会稍微挖掘一个闪亮的例子,但请记住,这仍然在开发中,并将在今年年底之前发布(我想象的更全面的文档).

  • 未来的作者在这里; 我确认乔在这里工作会解决这个问题.(OP希望关闭应用程序并稍后再回到它的部分比较棘手;我在todo列表上支持持久的可序列化和可重新加载的期货,但这需要一些时间) (2认同)