2016-08-04 16 views
1

私のサーバーに配備され、かなりうまく動作するR shinyアプリケーションでは、"generate report"というボタンがあります。このボタンをクリックすると、'pdflatex'からsystem()コマンドを呼び出してpdfレポートを生成します。 system(paste0('pdflatex ', '-output-directory ./ ', texfile))R光沢のあるアプリでシステムアプリケーションのいくつかのインスタンス

実行中のすべてのインスタンスで同時に"generate report" buttonをクリックすると、アプリケーションのインスタンスが複数実行されて正常に動作することがありますが、サーバーはレポートを生成してハングすることがありません。実行中の光沢のあるアプリケーションインスタンスは、サーバ(Linux x64)にインストールされている同じ'pdflatex' appを呼び出します。

私は、光沢のあるアプリケーションの1つのインスタンスに対してシステムアプリケーション(pdflatex)の1つのインスタンスを実行する可能性について疑問に思っています。

答えて

1

できます。私は同じ問題を持っていたし、周りの私の仕事は、セッショントラッキングを有効にする必要があります覚えておいてください(セッションごとに一時フォルダを作成することでした。

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

}) 

思考プロセスは次のとおりです。

Aユーザーはあなたの光沢のあるアプリに接続し、セッションを開きます。

b。固有のフォルダを作成します(wwwや別のフォルダなど)。 like:

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。ユーザーに固有のフォルダからファイルをダウンロードさせます。

オープンソースのshinyを実行している場合、複数のユーザーが単一スレッドで実行されると同時にレポート生成ボタンをクリックすると問題が発生する可能性があるので、人はキューに入れられます。

関連する問題