Я сделал блестящее настольное приложение для windows, используя удивительный пакет RInno , но у меня возникли некоторые несоответствия при запуске приложения. Время от времени приложение не завершает свой сеанс должным образом, оставляя R в фоновом режиме. Их github предлагает использовать этот кусок кода в функции сервера, чтобы обеспечить правильное завершение R при завершении сеанса. Я могу сказать, когда приложение завершает работу должным образом, потому что я включаю пользовательскую функцию, которая копирует файлы журнала в новое индексированное имя для записей и отладки.
if (!interactive()) {
session$onSessionEnded(function() {
write_logs_out() #My custom function. renames logs and stores backups of session data in .rds files
stopApp()
q("no")
})
}
В этих случаях новый файл журнала не создается, поэтому я предполагаю, что stopApp()
и q("no")
также никогда не выполняются, оставляя R в фоновом режиме. Одна из основных проблем - я не знаю, как воспроизвести эту ошибку. Мое текущее предположение состоит в том, что это происходит, когда сеанс R локально перестает отвечать. Пока R все еще работает в фоновом режиме, блестящее приложение никогда полностью не открывается в веб-браузере. Сначала мне нужно будет открыть диспетчер задач и выйти из любых сессий R (обычно с именем «front-end R»), чтобы приложение снова заработало.
Поскольку я не знаю, как ожидать эту случайную ошибку Мне было интересно, могут ли какие-нибудь эксперты windows помочь мне написать скрипт, который проверит, запущен ли процесс R, а затем уничтожит его. Это, по крайней мере,
Я знаю, что
tasklist | findstr Rscript.exe
перечислит все текущие Rscripts, работающие (я считаю, что это "R front-end", который я вижу в диспетчере задач), но я не знаю, является ли плохой практикой просто включать taskkill /IM "Rscript.exe" /F
перед строкой, которая вызывает файл .wsf, запускающий приложение.
Основная проблема, которую я вижу в этом, заключается в том, что если сессия работает нормально и пользователь по какой-то причине снова щелкает приложение, оно принудительно перезапускается.
Есть предложения?