У меня проблемы с развертыванием блестящего приложения на блестящем сервере.
По сути, у меня есть CSV, который обновляется каждое утро, и я хотел бы, чтобы блестящее приложение на сервере проверяло, обновлялись ли каждые пять минут, и реактивно редактировало данные и отображало график ниже.
Этот анализ данных (create_issue_spotter_data
) занимает относительно много времени в R, поэтому у меня также есть несколько схематичный способ убедиться, что это обновление данных не произойдет, когда начинается новый сеанс: у меня есть переменная start
, которая проверяет, равно ли оно 1. Если это так, оно увеличивается, поэтому при следующем обновлении chat_file()
будет вызвана функция create_issue_spotter_data
. Я готов полностью удалить это, если это плохая практика.
Когда это приложение работает локально, оно работает именно так, как я хочу. Тем не менее, он не работает на блестящем сервере. Код размещен ниже:
write.csv(mtcars, 'mtcars.csv')
create_issue_spotter_data = function(df) {
df$new_column = 0
df = df[df$mpg < 20, ]
return(df)
}
ui <- fluidPage(
fluidRow(align = "center", downloadButton("download_btn")),
fluidRow(align = "center", plotOutput("distPlot"))
)
server <- function(input, output) {
start <- 1
file <- reactiveFileReader(
intervalMillis = 1000 * 60 * 5,
session = NULL,
filePath = 'mtcars.csv',
readFunc = readr::read_csv
)
this_df = eventReactive(file(), {
if (start != 1) {
print(paste("Now updating the data. Date:", Sys.time()))
saved_df <<- create_issue_spotter_data(file())
df <- saved_df
} else {
start <<- start + 1
print(paste("Everything's good at", Sys.time()))
df <- saved_df
}
df
})
output$download_btn <- downloadHandler(
filename = paste0(paste("Issue", "Spotter", gsub("-", "_", Sys.Date()), sep = "_"), ".pdf"),
content = function(file) {
pdf(file)
p = build_cluster_viz(this_df(), download = TRUE)
print(p)
dev.off()
}, contentType = "pdf")
output$distPlot <- renderPlot({
plot(this_df()$mpg, this_df()$disp)
})
}