如何在multidplyr中设置超时

How to set time out in multidplyr

我在使用 multidplyr 时不一致地收到以下错误(即,对于相同的数据,有时我会收到错误,有时不会):

Error in rs_init(self, private, super, options, wait, wait_timeout) : Could not start R session, timed out

我的设置如下:

list1 <- list() 

for (i in 1:500){
  while(TRUE){
    test1 <- try(df %>% 
                   group_by(id) %>% 
                   recursive_func_c())
    if(!is(test1, 'try-error')) break
  }
  list1[[i]] <- test1
}

其中 recursive_func_c 是调用的函数:

cluster <- multidplyr::new_cluster(7)

据我正确理解,multidplyr 集群由 callr 创建的多个 R 进程组成。我收到的错误消息似乎来自 callr 包。 为了调试,我想在multidplyr内为callr设置更长的超时时间。那可能吗? 感谢您的任何提示。

认为此问题已在此处解决:https://github.com/tidyverse/multidplyr/issues/97

15 秒对我的设置来说可能太短了。

如果您遇到同样的问题,您可以尝试暂时将new_cluster()wait_timeout更改为trace(new_cluster, edit=TRUE)(更多关于通用功能修改可以在这里找到:Modify package function)

60 秒似乎对我有用。