闪亮的服务器 - 安排 mysql 查询而不是每次加载应用程序时运行?

Posted

技术标签:

【中文标题】闪亮的服务器 - 安排 mysql 查询而不是每次加载应用程序时运行?【英文标题】:Shiny server - schedule mysql query instead of running everytime the app is loaded? 【发布时间】:2017-04-24 19:12:36 【问题描述】:

我在 Azure 的 Ubuntu VM 中运行了一个闪亮的服务器。

如何安排每晚在 server.R 中的 mysql 查询?以及如何避免每次访问应用程序时都运行它们?

这是我的 server.R 和 ui.R 的示例:

服务器.R

library(shiny)
library(RMySQL)
library(ggplot2)
#library(ggiraph)
library(lubridate)

##Connect to Redmine db
con <- dbConnect(MySQL(),
                 user = '#',
                 password = '#',
                 host = '#',
                 dbname='#')

tickets<-dbGetQuery(con, "Select * from table")
issues_speed_unique<-unique(na.omit(dbGetQuery(con,"Select * from table2")))
dbDisconnect (con) 

some aggregations....

shinyServer(
  function(input,output)

ui.R

library(shiny)
library(ggplot2)
#library(ggiraph)
#library(htmltools)
library(lubridate)

shinyUI(fluidPage(  

【问题讨论】:

您可以尝试从以系统日期命名的缓存文件中读取数据,如果不存在,则从查询中创建它。但是当天的第一个用户会比较慢。 谢谢@HubertL,听起来不错。我一直在寻找如何创建缓存文件,但似乎没有找到任何提示(我能理解)。你能推荐点什么吗? 【参考方案1】:

用code I found there的这种改编替换server.R中的开始代码:

filename <- paste0(Sys.Date(),'.RData')
if (!file.exists(filename))
    # don't have a cached copy so run the query
    library(RMySQL)
    con <- dbConnect(MySQL(),
                     user = '#',
                     password = '#',
                     host = '#',
                     dbname='#')

    tickets<-dbGetQuery(con, "Select * from table")
    issues_speed_unique<-unique(na.omit(dbGetQuery(con,"Select * from table2")))
    dbDisconnect (con) 

    # save the query results for the future
   save(list=c('tickets', 'issues_speed_unique'), file=filename)
   rm(list=c('tickets', 'issues_speed_unique') )

load(file=filename)

【讨论】:

以上是关于闪亮的服务器 - 安排 mysql 查询而不是每次加载应用程序时运行?的主要内容,如果未能解决你的问题,请参考以下文章

创建一个带有闪亮的条形图,每次选择一个区域时都会显示一个新图

mysql在存储过程中创建触发器

表名而不是正在显示的表R闪亮[重复]

在闪亮的 R 中使用 selectInput 来选择和过滤行,而不是选择列

动态创建带有闪亮绘图的选项卡,而无需重新创建现有选项卡

23.Mysql应用优化