Вы можете использовать invalidateLater
и stopApp
.
Переменная now
определена вне функции сервера, поэтому она будет выполняться при запуске и захватывать время запуска.
Этот пример повторно выполняет наблюдатель каждые 1000 миллисекунд и проверяет, больше ли новый Sys.time()
, чем Starttime (now
) плюс 10 секунд.Чтобы изменить его на 1 час, вы должны обменять now + 10
на now + 3600
.И вы также можете увеличить invalidateLater, например, до 30 минут (invalidateLater(1800000)
).
Через 10 секунд он переходит в состояние if и останавливает приложение.
library(shiny)
ui <- fluidPage(
sliderInput("test", "test", 1, 100, 1, 1)
)
now <- Sys.time()
server <- function(input, output, session) {
observe({
invalidateLater(1000)
print(paste("Actual Time: ", Sys.time(), " - Endtime: ", now + 10))
if (Sys.time() > now + 10) {
print("Stop the App")
stopApp()
}
})
}
shinyApp(ui, server)