Я загружаю данные из онлайн-API. Данные разбиты на страницы, поэтому мне нужно совершать последовательные звонки.Невозможно вызвать rest api с foreach(), используя распараллеливание
Поэтому я настроил параллельный цикл foreach(), который в конечном итоге rbind() выводит.
Вот код:
library('foreach')
library('parallel')
library('jsonlite')
registerDoMC(cores = parallel::detectCores())
data <- foreach(page = 1:10, .combine = rbind) %dopar% {
raw.data <- fromJSON(paste(endpoint, '&page=', page, sep =''))
raw.data <- raw.data$results
data.piece <- raw.data[c('id', 'scraper', 'title', 'text', 'ts', 'url', 'pertinence', 'source')]
data.piece
}
конечная точка URL-адрес REST.
Цикл возвращает NULL, и, кроме того, он запускается немедленно (каждый вызов действительно должен за пару секунд).
Так что кажется, что вызовы пропускаются. Если я запускаю один и тот же код не параллельно, он работает без проблем.
Вы должны включить свой код, который устанавливает параллельный бэкэнд перед вышеуказанным блоком кода, а также все остальное, необходимое для воспроизведения этого примера ('endpoint',' page' и т. Д.). – nrussell
страница уже определена в коде. Я добавил использованные библиотеки. Конечная точка, как я уже сказал, является URL-адресом для отдыха (который я не могу раскрывать), но любой другой URL-адрес мог бы сделать; поскольку я сказал, что код работает не параллельно (% do% вместо% dopar%), работает отлично, поэтому конечная точка не является проблемой. – Bakaburg
Если какой-либо URL-адрес будет выполнен, сопоставьте пример с любым URL-адресом, который воспроизводит ошибку. – nrussell