2016-08-04 165 views
1

在我的服务器上部署的R闪亮应用程序中,运行良好,我有一个名为"generate report"的按钮。当你点击这个按钮时,它会调用'pdflatex'system()命令生成PDF报告。 system(paste0('pdflatex ', '-output-directory ./ ', texfile))R闪亮应用程序中的系统应用程序的几个实例

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

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

回答

1

你可以。我有同样的问题,我的解决办法是创建一个临时文件夹为每个会话(记住,你需要启用会话跟踪:

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

}) 

的思维过程是:

甲A b。根据该会话创建一个唯一的文件夹(可能位于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) 
} 

c。在那里保存pdf文件。 d)。让用户从他们自己的唯一文件夹下载文件。请注意,如果您运行的是开放源代码闪存,您可能会遇到多位用户在运行单线程的同时单击生成报告按钮的问题,这样人们就会排队等候。

相关问题