aufrufen Ich lade Daten von einer Online-API. Die Daten werden paginiert, so dass ich aufeinanderfolgende Anrufe tätigen muss.Kann nicht eine Ruhe-API mit foreach() mit der Parallelisierung
Deshalb habe ich eine parallelisierte foreach() Schleife eingerichtet, die schließlich die Ausgabe rbind().
Hier ist der Code:
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
}
Endpoint ist eine URL REST.
Die Schleife gibt NULL zurück und außerdem läuft sie sofort (jeder Aufruf sollte in der Tat ein paar Sekunden dauern).
So scheint es, dass die Anrufe übersprungen werden. Wenn ich denselben Code nicht parallel laufe, funktioniert es ohne Probleme.
Sie sollten Ihren Code, der das parallele Backend vor dem obigen Codeblock einrichtet, sowie alles andere, was erforderlich ist, um dieses Beispiel reproduzierbar zu machen ("Endpunkt", "Seite" usw.), einfügen. – nrussell
Seite ist bereits im Code definiert. Ich habe die verwendeten Bibliotheken hinzugefügt. Endpunkt wie gesagt ist eine Ruhe-URL (die ich nicht offen legen kann), aber jede Ruhe-URL könnte tun; Wie ich schon sagte, läuft der Code nicht parallel (% do% anstelle von% dopar%), funktioniert einwandfrei, also ist der Endpunkt nicht das Problem. – Bakaburg
Wenn eine URL erstellt wird, erstellen Sie ein Beispiel mit einer beliebigen URL, die den Fehler reproduziert. – nrussell