带有未来库的R / Shiny:检查已解决的过程

时间:2019-03-07 11:08:54

标签: r parallel-processing shiny future multicore

我正在使用“未来”库来加快我闪亮的应用程序的启动时间。

在global.R脚本中,我需要加载一些大的RDS数据。由于我不希望用户在加载数据时等待1-2分钟,因此我使用Future将数据的加载转移到专用内核上:

global.R

...
library(future)
plan(multicore)
...

...
FDA_path <- file.path(data_path, "FDA")

# Load data
fda_data_path <- file.path(FDA_path, "fda_labels.RDS")
fda_filter_path <- file.path(FDA_path, "fda_filters.RDS")
fda_data_main %<-% readRDS(fda_data_path)
fda_filters_df %<-% readRDS(fda_filter_path)
...

一切正常,当后台加载数据时,用户会在几秒钟内看到应用程序打开。

一旦应用出现,由于用户正在加载,用户仍无法使用数据,因此我想向用户显示通知。 我已经尝试过了:

Server.R

fdaDataSearch <- reactive({
    if(!resolved(futureOf(fda_data_main))){
        showNotification("loading FDA data",type="warning")
    }
    fda_data_main %>% filter(id %in% fdaDataSearch_ids())
  })

此代码用于生成呈现给用户的数据框。 根据“未来”文档(https://cran.r-project.org/web/packages/future/vignettes/future-1-overview.html),“已解决”功能可用于监视过程何时结束。所以我想要的是,当用户尝试生成数据框时,如果进程仍在运行,则会显示一条通知。

该指令不起作用,并且我得到的错误消息是:

警告:错误:在环境‘中找不到未来('fda_data_main')

为什么会出现此错误?还有其他方法可以检查过程是否结束并通知用户?

0 个答案:

没有答案