2016-08-04 170 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)。讓用戶從他們自己的唯一文件夾下載文件。請注意,如果您運行的是開放源代碼閃存,您可能會遇到多位用戶在運行單線程的同時單擊生成報告按鈕的問題,這樣人們就會排隊等候。

相關問題