Nano Hash - криптовалюты, майнинг, программирование

Приложение R Shiny само закрывается через некоторое время при запуске из R Studio, но все еще слушает, это нормально?

Общий вопрос о R Shiny/R Studio...

Я заметил, что когда я запускаю свое приложение R Shiny, все, что я запрограммировал до сих пор, работает так, как предполагалось. Однако, если я держу окно открытым в фоновом режиме и переключаюсь на использование чего-то другого (например, Excel, Chrome и т. д.), а иногда даже если я нахожусь в самом окне, через несколько минут или около того окно просто закрывается. сам. Однако R Studio показывает, что он все еще прослушивает, и не будет запускать дальнейший код, пока я не нажму кнопку STOP, чтобы завершить текущий запуск приложения.

Является ли такое поведение нормальным в R Studio при разработке приложения или предполагает, что с моим кодом что-то не так, из-за чего оно исчезает? Нет предупреждающих сообщений, которые появляются в консоли, когда она исчезает. Я попытался запустить другое приложение, используя базовый пример кода, который я нашел, и происходит то же самое.

Если это обычное дело, почему это происходит и есть ли способ остановить это?

Пример кода, вероятно, не актуален, но вот пример приложения с веб-сайта RStudio https://shiny.rstudio.com/articles/basics.html. Эта проблема возникает и с этим приложением.

ui <- fluidPage(
  
  # App title ----
  titlePanel("Reactivity"),
  
  # Sidebar layout with input and output definitions ----
  sidebarLayout(
    
    # Sidebar panel for inputs ----
    sidebarPanel(
      
      # Input: Text for providing a caption ----
      # Note: Changes made to the caption in the textInput control
      # are updated in the output area immediately as you type
      textInput(inputId = "caption",
                label = "Caption:",
                value = "Data Summary"),
      
      # Input: Selector for choosing dataset ----
      selectInput(inputId = "dataset",
                  label = "Choose a dataset:",
                  choices = c("rock", "pressure", "cars")),
      
      # Input: Numeric entry for number of obs to view ----
      numericInput(inputId = "obs",
                   label = "Number of observations to view:",
                   value = 10)
      
    ),
    
    # Main panel for displaying outputs ----
    mainPanel(
      
      # Output: Formatted text for caption ----
      h3(textOutput("caption", container = span)),
      
      # Output: Verbatim text for data summary ----
      verbatimTextOutput("summary"),
      
      # Output: HTML table with requested number of observations ----
      tableOutput("view")
      
    )
  )
)

# Define server logic to summarize and view selected dataset ----
server <- function(input, output) {
  
  # Return the requested dataset ----
  # By declaring datasetInput as a reactive expression we ensure
  # that:
  #
  # 1. It is only called when the inputs it depends on changes
  # 2. The computation and result are shared by all the callers,
  #    i.e. it only executes a single time
  datasetInput <- reactive({
    switch(input$dataset,
           "rock" = rock,
           "pressure" = pressure,
           "cars" = cars)
  })
  
  # Create caption ----
  # The output$caption is computed based on a reactive expression
  # that returns input$caption. When the user changes the
  # "caption" field:
  #
  # 1. This function is automatically called to recompute the output
  # 2. New caption is pushed back to the browser for re-display
  #
  # Note that because the data-oriented reactive expressions
  # below don't depend on input$caption, those expressions are
  # NOT called when input$caption changes
  output$caption <- renderText({
    input$caption
  })
  
  # Generate a summary of the dataset ----
  # The output$summary depends on the datasetInput reactive
  # expression, so will be re-executed whenever datasetInput is
  # invalidated, i.e. whenever the input$dataset changes
  output$summary <- renderPrint({
    dataset <- datasetInput()
    summary(dataset)
  })
  
  # Show the first "n" observations ----
  # The output$view depends on both the databaseInput reactive
  # expression and input$obs, so it will be re-executed whenever
  # input$dataset or input$obs is changed
  output$view <- renderTable({
    head(datasetInput(), n = input$obs)
  })
  
  
}
shinyApp(ui, server)

Ответы:


1

Я сам написал несколько блестящих приложений и раньше не сталкивался с таким поведением, даже в RStudio или в моем автономном приложении Chrome, которое вообще не использует rstudio.

На первый взгляд я вижу, что вы не используете объект сеанса на своем сервере.

function(input, output, session)

В то время как объект сеанса обрабатывает повторное соединение с сервером в фоновом режиме, возможно, он также делает это с вашим локальным хостом. Но я действительно не знаю. Попробуйте интегрировать это, и если ошибка все еще существует, мы должны посмотреть на вашу систему и установленные пакеты в вашем приложении.

Объект сеанса

01.03.2021
  • Спасибо, как вы говорите, объект сеанса отсутствует в приведенном выше коде, но я уже включил его в код своего собственного приложения, и эта проблема все еще возникает. Я также пытался добавить строку session$allowReconnect(TRUE) на сервер, но безрезультатно. 01.03.2021
  • Хм, весь браузер закрывается или только приложение? 01.03.2021
  • Если он работает в браузере Chrome, возможно, это как-то повлияло на него. Попробуйте удалить все файлы cookie и данные просмотра, отключить все расширения в браузере, которые могут на это повлиять. 01.03.2021
  • Просто всплывающее окно приложения, и, как я уже сказал, это просто окно, которое исчезает. Само приложение все еще работает в окне консоли и не выдает никаких признаков ошибки. попробую ваши предложения спасибо 01.03.2021
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..