Ich möchte das Klempner-Paket verwenden, um einige flexible parallele Verarbeitung auszuführen und hatte gehofft, es würde in einem node.js-Framework so arbeiten, dass es nicht blockiert ...R Klempner-Paket für node.js Parallelverarbeitung
Ich habe die folgende Klempnerdatei.
# myfile.R
#* @get /mean
normalMean <- function(samples=10){
Sys.sleep(5)
data <- rnorm(samples)
mean(data)
}
Ich habe auch PM2 installiert wie hier vorgeschlagen http://plumber.trestletech.com/docs/hosting/
Ich habe auch die gleiche run-myfile.sh
Datei dh
#!/bin/bash
R -e "library(plumber); pr <- plumb('myfile.R'); pr\$run(port=4000)"
und machte es vorgeschlagen ausführbare wie gemacht ...
I haben begonnen pm2 mit
und wollte zu sehen, testen, ob es eine nicht-blockierende node.js
Rahmen durchführen könnte ...
durch eine andere R-Konsole öffnen und läuft die folgende ...
foo <- function(){
con <- curl::curl('http://localhost:4000/mean?samples=10000',handle = curl::new_handle())
on.exit(close(con))
return(readLines(con, n = 1, ok = FALSE, warn = FALSE))
}
system.time(for (i in seq(5)){
print(foo())
})
Vielleicht ist es ist mein Missverständnis, wie ein node.js
nicht blockierendes Framework funktionieren soll, aber in meinem Kopf sollte die letzte Schleife nur ein bisschen über 5 Sekunden dauern. Aber es scheint 25 Sekunden zu dauern, was darauf hindeutet, dass alles sequenziell und nicht parallel ist.
Wie könnte ich das Klempner-Paket verwenden, um diese nicht blockierende Eigenschaft auszuführen?
Es gibt eine Diskussion geht hier vor, was der beste Platz sein würde, das Gespräch fortzusetzen: https://github.com/trestletech/plumber/issues/31 –