R闪亮应用程序中的几个系统应用实例

时间:2016-08-04 20:27:28

标签: r shiny

在R闪亮的应用程序中,它部署在我的服务器上并且运行良好,我有一个名为"generate report"的按钮。当您单击此按钮时,它会通过'pdflatex'命令调用system()来生成pdf报告。 system(paste0('pdflatex ', '-output-directory ./ ', texfile))

我可以运行我的应用程序的多个实例并且工作正常,但是,如果我同时点击所有正在运行的实例中的"generate report" button,服务器无法生成报告并挂起,因为所有正在运行的闪亮应用实例都调用我服务器上安装的'pdflatex' app(Linux x64)。

我想知道为一个闪亮的app应用程序运行一个系统应用程序实例(pdflatex)的可能性。

1 个答案:

答案 0 :(得分:1)

你可以。我遇到了同样的问题,我的工作是为每个会话创建一个临时文件夹(请记住,您需要启用会话跟踪:

shinyServer(function(input, output, **session**) {

})

思考过程是:

一个。用户连接到您闪亮的应用程序并打开会话。

湾基于该会话,创建一个唯一的文件夹(可能在www或单独的文件夹中)。您可以使用以下内容生成文件夹名称作为随机字符串:

makeRandomString <- function(n = 1, length = 12) {
  randomString <- c(1:n)
  for (i in 1:n) {
    randomString[i] <- paste(sample(c(0:9, letters, LETTERS),
                                    length, replace = TRUE),
                             collapse = "")
  }

  return(randomString)
}

℃。将pdf文件保存在那里。

d。让用户从他们自己的唯一文件夹下载文件。

请记住,如果您运行的是开源闪存,那么在多个用户单线程运行的同时单击生成报告按钮时,您可能会遇到问题,因此人们将排队等候。< / p>