Сохранить и загрузить рабочее пространство в приложении на локальном сервере - PullRequest
0 голосов
/ 09 февраля 2019

У меня блестящее приложение, работающее на локальном сервере, доступное через веб-браузер через «ip-adres: порт».У меня запланирована задача в планировщике задач, которая выполняет следующий код (путь: "C: //Users//Administrator//Documents//run.R"

require(shiny)
folder_address = "C://Users//Administrator//Documents//App//app.R"

x <- system("ipconfig", intern = TRUE)
z <- x[grep("IPv4", x)]
ip <- gsub(".*? ([[:digit:]])", "\\1", z)

runApp(folder_address, launch.browser = FALSE, port = 1234, host = ip)

Задача выполняется очень хорошо,так как я могу получить доступ к приложению через «ip: порт».

В начале app.R я вручную загружаю рабочее пространство: load("C://Users//Administrator//Documents//App//.RData"). Когда я не загружаю его вручную, приложение выигралоне распознает переменные / фреймы данных приложения.

Моя проблема заключается в следующем:

  • Задача запускается каждое утро. Когда мы запускаем задачу только один раз, она можетможет случиться так, что на сервере будет обновление или около того, и он перезапустится. Таким образом, приложение больше не будет запускаться.
  • Когда задача выполняется на следующий день после внесения изменений в приложение (то есть переменныхи кадры данных были изменены), он загружает рабочее пространство снова.
  • Это рабочее пространство не содержит отредактированные данные, поскольку рабочее пространство не сохраняется автоматически после редактирования.
  • Когда я вручную ставлю save.image(".RData") в app.R о событиях, которые инициируютПосле редактирования данных, таких как кнопки, сохраняется рабочее пространство run.R, в результате чего меняются переменные x, z, ip и folder_address.

Как я могусохранить рабочую область приложения, а не рабочую область run.R?Обходной путь должен состоять в том, чтобы сеть позволяла заданию запускаться каждый день и просто открывалась.Но тогда нам придется вручную перезапустить задачу, как только она остановит, например, обновление.

1 Ответ

0 голосов
/ 09 февраля 2019

Есть несколько способов получить желаемый результат.

Два из лучших способов сохранения данных - это использовать базу данных или хранить объекты в сервисе, таком как Amazon S3.

Если вам необходимо сохранить среду R, можете ли вы адаптировать свое приложение для сохранения после каждого редактирования, чтобы в случае его прерывания оно снова запускалось в том же месте на следующее утро?

В качестве альтернативы, вы могли бы реорганизовать свое приложение для сохранения rds файлов (r-файлов) и считывать их при запуске приложения, а также сохранять каждый после редактирования (это может быть намного быстрее, чем сохранение всего Rокружающая среда)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...