Как установить тайм-аут в multidplyr

Я непоследовательно получаю следующую ошибку при использовании (т.е. для одних и тех же данных иногда я получаю ошибку, иногда нет):

Ошибка в rs_init (self, private, super, options, wait, wait_timeout): не удалось запустить сеанс R, истекло время ожидания

Моя настройка выглядит так:

      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 состоит из нескольких процессов R, созданных с помощью. Кажется, я получаю сообщение об ошибке из пакета. Для отладки я хотел бы установить более длительный тайм-аут для callr в multidplyr. Это возможно? Спасибо за любой намек.

1 ответ

Думаю, эта проблема была решена здесь: https://github.com/tidyverse/multidplyr/issues/97

15 секунд, вероятно, слишком мало для моей настройки.

Если вы столкнулись с той же проблемой, вы можете попробовать временно изменить wait_timeout из new_cluster() с участием trace(new_cluster, edit=TRUE)(подробнее об общей модификации функции можно найти здесь: Изменить функцию пакета )

Мне кажется, 60 секунд работают.

Другие вопросы по тегам