运行r脚本并实时获取输出日志

时间:2017-06-14 05:43:49

标签: r shiny shiny-server

我想运行r脚本并实时获取输出日志。

我的代码是这样的。
这只是我的想法,可以运行 但是,问题是闪亮应用程序中的打印日志输出不是实时的 刚刚完成r脚本,然后在闪亮的应用程序中出现了日志 我想在闪亮的应用程序中实时登录。
任何人都知道问题是什么,我应该为自己的意图做些什么。

ui <- fluidPage(    
    sidebarLayout(
        sidebarPanel(
            ### Input1
            textInput("input1", "input1:"),
            ### Input2
            textInput("input2", "input2:"),
            ### 
            actionButton("run", "Running", width='200px')
        ),
        mainPanel(
            verbatimTextOutput('log')
        )
    )
)

server <- function(input, output, session) {

    observeEvent(input$run, {
      ### clear log file
      system("> log_path/test.log")
      ### excute run text
      runs <- paste("Rscript 'script_path/test.R'",
                    input$input1,
                    input$input2,
                    ">> 'log_path/test.log' 2>&1")
      system(runs)
    })

    output$log <- renderText({
      ### 1sec refresh
      invalidateLater(1000, session)
      ### read log file 40 tail
      text_log <- readLines("log_path/test.log",  n = -1) %>% 
          tail(40) %>% paste(collapse = "\n")
      return(text_log)
    })
}

shinyApp(ui, server)

1 个答案:

答案 0 :(得分:0)

您只需要将wait = FALSE传递到system函数中即可。

使用system(runs, wait = F),一切正常。