Jesús Para Fernández
2018-11-21 07:47:59 UTC
Buenas,
Estoy intentando que al ejectuar un boton en shiny me cargue de manera asincrona dos consultas. Una es a una consulta sql pesada (tarda 10 segundos) y la otra es una sql ligera (tarda 0 segundos). Intento que el resultado de la consulta ligera se muestre mientras se espera al resulatdo de la consulta pesada, pero no lo consigo.
Estoy usando promises con future, en linux, pero no me funciona 🙁 , ya que me muestra el ersultado del proceso pesado y el ligero solo cuando se ha ejecutado ya el pesado.
Para simular las consultas, eh creado la funcion heavyFunction.... Aqui os pongo mi código. ¿Qué creeis que puede estar pasando? Lo curioso es que si os fijais en la consola, si que funciona bien.
library(future)
library(promises)
plan(multiprocess)
heavyFunction <- function(n){
Sys.sleep(n)
print(n)
}
ui <- fluidPage(
actionButton("go","Show the data"),
textOutput("result0sec"),
textOutput("result10sec")
)
server <- function(input,output,session){
data0 <- eventReactive(input$go,{
heavyFunction(0)
})
data10 <- eventReactive(input$go,{
future(heavyFunction(10))
})
output$result0sec <- renderText({
data <- data0()
print(data)
})
output$result10sec <- renderText({
data <- data10()
data%...>%print()
})
}
shinyApp(ui,server)
[[alternative HTML version deleted]]
Estoy intentando que al ejectuar un boton en shiny me cargue de manera asincrona dos consultas. Una es a una consulta sql pesada (tarda 10 segundos) y la otra es una sql ligera (tarda 0 segundos). Intento que el resultado de la consulta ligera se muestre mientras se espera al resulatdo de la consulta pesada, pero no lo consigo.
Estoy usando promises con future, en linux, pero no me funciona 🙁 , ya que me muestra el ersultado del proceso pesado y el ligero solo cuando se ha ejecutado ya el pesado.
Para simular las consultas, eh creado la funcion heavyFunction.... Aqui os pongo mi código. ¿Qué creeis que puede estar pasando? Lo curioso es que si os fijais en la consola, si que funciona bien.
library(future)
library(promises)
plan(multiprocess)
heavyFunction <- function(n){
Sys.sleep(n)
print(n)
}
ui <- fluidPage(
actionButton("go","Show the data"),
textOutput("result0sec"),
textOutput("result10sec")
)
server <- function(input,output,session){
data0 <- eventReactive(input$go,{
heavyFunction(0)
})
data10 <- eventReactive(input$go,{
future(heavyFunction(10))
})
output$result0sec <- renderText({
data <- data0()
print(data)
})
output$result10sec <- renderText({
data <- data10()
data%...>%print()
})
}
shinyApp(ui,server)
[[alternative HTML version deleted]]