Как установить тайм-аут в 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 секунд работают.