【问题标题】:Several instances of system application in R shiny appR Shiny 应用中系统应用的几个实例
【发布时间】:2016-08-19 07:13:10
【问题描述】:

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

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

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

【问题讨论】:

    标签: r shiny


    【解决方案1】:

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

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

    思考过程是:

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

    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。让用户从他们自己的唯一文件夹下载文件。

    请记住,如果您运行的是开源 Shiny,您可能会遇到多个用户在运行单线程时同时单击生成报告按钮的问题,因此人们会排长队。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-11
      • 2019-03-05
      • 1970-01-01
      • 1970-01-01
      • 2011-05-26
      相关资源
      最近更新 更多