Невозможно отключить соединения в блестящем приложении с помощью пакета пула - PullRequest
1 голос
/ 16 апреля 2020

У меня блестящее приложение на AWS сервере Ubuntu, подключенном к базе данных mysql, мое приложение иногда не работает, если количество подключений к базе данных превышено (16 новых подключений). Я пробовал несколько способов из разных источников в inte rnet, но не смог получить требуемое решение. Кроме того, я также получаю предупреждение вы пропустили объект пула . Я прилагаю образец кода.

 library("shiny")
 library("shinydashboard")
library("pool")
library(ggplot2)
library("DBI")
 library(plotly)

 pool <- dbPool(drv = RMySQL::MySQL(),dbname = "db",host = "database.cw5east-2.rds.amazonaws.com",username = "host",password = "host", port = 3306)
 mychoices = dbGetQuery(pool,"select available_scenario from scenario_name;")
 ui <- (fluidPage(
    titlePanel("Demonstration of renderUI in shiny - Dymanically creating the tabs based on user inputs"),
  sidebarLayout(
sidebarPanel(
  selectInput(inputId = 'n', "available scenarios", choices = mychoices, multiple = TRUE),
  verbatimTextOutput("selected")

),
mainPanel(
  plotOutput('Cost'),
   uiOutput('tabs')
   )
 )
))
 server <- (function(input,output,session){
   output$tabs = renderUI({
par(mfrow = c(2, 2)) 
if(!is.null(input$n)){

  x <- input$n
  y <- length(x)
  z <- dbGetQuery(pool,paste0("select scenario_key from scenario_name where available_scenario  = '",x[y],"'"))
    frame <- dbGetQuery(pool,paste0("select x,price  from plot1 where scenario_key ='",z,"'"))
  frame1 <- dbGetQuery(pool,paste0("select obj,runs from plot2 where scenario_key ='",z,"'"))
  frame2 <- dbGetQuery(pool,paste0("select V1,V2,V3 from tableee where scenario_key ='",z,"'"))
  runs <- dbGetQuery(pool,paste0(" select count(*) from plot2 where scenario_key ='",z,"'"))
  b<-dbGetQuery(pool, paste0("select scenario_key from  scenario_name where available_scenario  = '",input$n,"'"))
  Tabs <- lapply(paste("Scenario name:", input$n, sep=" "), tabPanel,
                 renderPlotly({
                   ggplot(frame, aes(x=x,y=price,fill=price)) +  # basic graphical object
                     geom_col(width = 0.3)+
                     #geom_bar(position = 'dodge',stat = "identity")+ # first layer
                     xlab(NULL)+ylab("Price in USD")+
                     geom_text(aes(label=price),size=5,position=position_dodge(width=0.9), vjust=-0.25)+
                     theme_minimal()+
                     theme(axis.text = element_text(size = 12),
                           axis.title = element_text(size=16),
                           axis.text.y =element_text(angle = 90,hjust = 1))
                 }),

                 renderPlotly({
                   ggplot(frame1,aes(x=runs,y=obj))+
                     geom_col(width=0.3,fill='orangered')+
                     geom_hline(aes(yintercept=mean(obj,na.rm = T),color="Mean"),linetype='dashed',size=1)+
                     scale_color_manual(values = "blue")+
                     labs(x= 'Day Number',y='Reveneue in USD',color=NULL)+
                     theme_minimal()+theme(axis.text = element_text(size = 12),
                                           axis.title = element_text(size=16),
                                           axis.text.y= element_text(angle = 90,hjust = 1) )

                 }),
                 DT::renderDataTable({
                   frame2
                 },colnames=c('Day','Total Wt(kg)','Total Pcs','Revenue($)')
                 )

      )

      do.call(tabsetPanel, Tabs)}

  })

})
 shinyApp(ui, server)
...