node.js run-Funktion im child-Prozess?

Habe ich eine node.js Anwendung, die eine Datei empfängt, über eine web-Anfrage und dann eine conversion-Prozess auf diese Datei. Da die Aufgabe ist die lange Laufzeit dieser laufen muss getrennt von der Haupt-thread.

Im moment habe ich gerade angerufen, die den erforderlichen code über eine setTimeout() nennen. Zu isolieren, die Haupt-Anwendung von der Konvertierung würde ich mag, um Sie aus zu einem Kind-Prozess, da es lange läuft und ich möchte zu isolieren, die Haupt-code aus der Arbeit (ich bin, sich sorgen zu viel?). Im moment bin ich aufrufen:

const execFile = require('child_process').execFile;
const child = execFile('node', './myModule.js', (error, stdout, stderr) => {
  if (error) {
    throw error;
  }
  console.log(stdout);
});

Ist das der richtige Ansatz node.js oder ist es einfach nur das starten eines untergeordneten Prozesses mit dem Modul und params angegeben, aber keine Angabe von 'Knoten', da die ausführbare Datei?

  • Sie haben ein bestimmtes problem mit diesem Ansatz? Das ist eine von mehreren Möglichkeiten, um einen neuen Prozess starten (.spawn() und .exec() ähnlich sind). Ich kann Ihnen sagen, dass Ihre throw error tut nichts nützlich, da das werfen in einem normalen asynchronen callback kann nicht gefangen werden überall nützlich, so tut es nichts anderes, als return.
  • Ist Ihre lang andauernde Prozess CPU-bound oder IO-bound? Die Antwort auf diese Frage ist sehr wichtig bei der Bestimmung, welcher Ansatz zu verwenden.
  • Ich hatte den obigen code auf ein Beispiel, das ich hatte. Ich hatte gehofft, um zu vermeiden, dass der ausdrückliche Verweis auf das "node" - Befehl, aber wenn das nicht als problem gesehen, dann bin ich in Ordnung. Für CPU - /IO, es ist ein video-Konvertierungs-Prozess, also wahrscheinlich ein bisschen von beidem. Obwohl, ich sehe jetzt die video-Konvertierung ist tatsächlich laichen ein externer Prozess (ffmpeg) unter der Haube, so könnte ich nicht brauchen, um über die Verzweigung (ich hatte gedacht, es sei eine Bibliothek benutzen).
  • Hallo, darf ich wissen, wie sollen wir zeigen das Ergebnis in der UI in diesem Beispiel? können Sie sich noch an meine Frage? stackoverflow.com/questions/53694567/...
InformationsquelleAutor Andre M | 2016-04-25
Schreibe einen Kommentar