2015-07-21 16 views
6

Parlak bir uygulama çalıştırırken sürekli arka plan görevini tutmak mümkün olup olmadığını bilmek isterim. Bu, örneğin, "iş parçacığı" öğesinin, BrightApp çalışırken bir web sayfasından veri veritabanına indirilebileceği anlamına gelir.R Parlak - Sürekli arkaplan görevi

Daha da fazlası, dış arka plandan "iş parçacığı" verileriyle etkileşim kurmak mümkün olabilir mi? (örneğin, indirilmekte iken, bir çizim veya bir şey yapmak).

Video eğitiminde, "Sunucu işlevinin dışındaki kod, R oturumu (çalışan) başına bir kez çalıştırılacaktır" denilmektedir. Yani ihtiyacım olan kod, sunucu işlevinin dışına yerleştirilmeli.

Açıkladığım sahneyi gerçekleştirmek mümkün mü? Veya başka bir harici R örneğine (brightApp komut dosyalarının dışında) ihtiyacım var mı?

Şimdiden teşekkürler.

cevap

1

Bunu düşünüyordum ve bunun mümkün olduğunu düşünüyorum, ancak aklımdaki uygulama platforma özgüdür. Bu durumda, 14.04 ubuntu kabul ediyorum.

ui.R:

library(shiny) 
fluidPage(
    numericInput('number','Number',10000000), 
    textOutput('CalcOutput') 
) 

server.R

library(shiny) 
function(input,output,session) { 
    output$CalcOutput <- renderText({ 
    sort(runif(input$number)) 
    }) 
} 

bir ilgili değişkenlerin bir fonksiyonu için operasyon geçirmek

bazı yoğun hesaplama gerektiren bir görev var Sağlar ki alt dosya:

newfile.R

saveRDS(sort(runif(commandArgs(TRUE)[1])), file = 'LargeComputationOutput') 

değişiklik server.R

function(input, output) { 
    observe({ 
    # Starts script as a background process, but completes instantaneously 
    system(paste('Rscript newfile.R',input$number,'&')) 
    }) 

    CalculationOutput <- reactive({ 
    invalidateLater(5000) 
    validate(
     need(file.exists('LargeComputationOutput'),'Calculation In Progress'), 
     need(file.info('LargeComputationOutput')$mtime > Sys.time()-5,'Calculation In Progress') 
    ) 
    x <- readRDS('LargeComputationOutput') 
    }) 

    output$CalcOutput <- renderText({ 
    CalculationOutput()[300] 
    }) 


} 

Bu hala biraz arabası, ama sen alt rprocesses yoğun operasyonlar taşımak ve reaktif bir dinleyici zaman o algılamak sahip olabileceği, kavram ispatı var hesaplamalar yapılır.

DÜZENLEME: Parlaklık, ilgili konuma yazmak için izinlere de ihtiyaç duyacaktır.