2016-11-30 3 views
0

Ich versuche, ein einfaches Diagramm mit noflo-filesystem und noflo-csv, die CSV-Datei liest, analysiert und schreibt es in Datei. Das Problem ist, dass das Programm für etwas wartet, dass ich weiß nicht, wie zu bieten:NoFlo kann die Ausführung nicht beenden

graph.fbp

Read(filesystem/ReadFile) OUT -> CSV ParseCSV(csv/ConvertCsvToMatrix) 
ParseCSV OUT -> IN Write(filesystem/WriteFile)  
'dump.csv' -> FILENAME Write(filesystem/WriteFile) 
'data.csv' -> In Read 

Als ich

.\node_modules\.bin\noflo-nodejs --graph graphs\graph.fbp --batch --register=false --debug 

laufen erhalte ich:

DATA -> FILENAME Write() CONN 
DATA -> FILENAME Write() DATA 
DATA -> FILENAME Write() DISC 
DATA -> IN Read() CONN 
DATA -> IN Read() DATA 
DATA -> IN Read() DISC 
DATA -> ENCODING Read() CONN 
DATA -> ENCODING Read() DATA 
DATA -> ENCODING Read() DISC 
Read() OUT -> CSV ParseCSV() CONN 
Read() OUT -> CSV ParseCSV() < ..\python_code\web_app\TimeSeries.csv 
Read() OUT -> CSV ParseCSV() DATA 
Read() OUT -> CSV ParseCSV() > ..\python_code\web_app\TimeSeries.csv 
Read() OUT -> CSV ParseCSV() DISC 
ParseCSV() OUT -> IN Write() CONN 
ParseCSV() OUT -> IN Write() DATA 

Und dann hängt das Programm.

Ich versuchte Write ‚s IN-Anschluss mit nur einem String wie zu füttern:

Read(filesystem/ReadFile) OUT -> CSV ParseCSV(csv/ConvertCsvToMatrix) 
'some text' -> IN Write(filesystem/WriteFile)  
'dump.csv' -> FILENAME Write(filesystem/WriteFile) 
'data.csv' -> In Read 

Und das funktioniert gut:

DATA -> IN Write() CONN 
DATA -> IN Write() DATA 
DATA -> IN Write() DISC 
DATA -> FILENAME Write() CONN 
DATA -> FILENAME Write() DATA 
DATA -> FILENAME Write() DISC 
DATA -> IN Read() CONN 
DATA -> IN Read() DATA 
DATA -> IN Read() DISC 
DATA -> ENCODING Read() CONN 
DATA -> ENCODING Read() DATA 
DATA -> ENCODING Read() DISC 

Würde jemand so freundlich sein zu beraten, wie kann ich es debuggen ?

Antwort

1

Das Problem ist, dass csv/ConvertCsvToMatrix sendet nicht disconnect auf seinem Ausgangsport. Dies führt dazu, dass NoFlo glaubt, dass das Netzwerk noch nicht fertiggestellt ist, sodass der Prozess nicht beendet wird. Auf beide Anrufe .send() in the component muss ein Anruf .disconnect() folgen.

Dies kann aus der debug Ausgabe zu sehen, dass es mit endet: ParseCSV() OUT -> IN Write() CONN ParseCSV() OUT -> IN Write() DATA

mit dem erfolgreichen Beispiel vergleichen, die mit DATA -> ENCODING Read() DISC

1

Mit enden NoFlo 0,8 wir eine neue Methode haben für das Sehen Welche Prozesse halten das Netzwerk am Leben?

network.getActiveProcesses gibt ein Array mit Prozess-IDs für Prozesse zurück, die derzeit aktiv sind.

Dies ist nützlich, um sich schlecht benehmende Komponenten zu finden.

Verwandte Themen