在R闪亮的应用程序中,它部署在我的服务器上并且运行良好,我有一个名为"generate report"
的按钮。当您单击此按钮时,它会通过'pdflatex'
命令调用system()
来生成pdf报告。 system(paste0('pdflatex ', '-output-directory ./ ', texfile))
我可以运行我的应用程序的多个实例并且工作正常,但是,如果我同时点击所有正在运行的实例中的"generate report" button
,服务器无法生成报告并挂起,因为所有正在运行的闪亮应用实例都调用我服务器上安装的'pdflatex' app
(Linux x64)。
我想知道为一个闪亮的app应用程序运行一个系统应用程序实例(pdflatex
)的可能性。
答案 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>