2016-11-30 2 views
0

noflo-filesystemnoflo-csvを使用して単純なグラフを実行しようとしていますが、CSVファイルを読み込み、解析してファイルに書き出します。 問題は、プログラムは、私が提供する方法がわからない何かを待っていることである:私はnofloはシャットダウンを実行できません

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

を実行すると

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

graph.fbpは私が取得:

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 

そして、プログラムがハングしています。

私は次のように単なる文字列でINポートWrite年代を供給しようとした:

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

そして、これは正常に動作します:

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 

誰もが、私はそれをデバッグする方法をアドバイスさせてとても親切だろう?

答えて

1

csv/ConvertCsvToMatrixは、出力ポートにdisconnectを送信していないという問題があります。これにより、NoFloはネットワークがまだ実行されていないと判断し、プロセスは停止しません。 the component.send()コールの両方には、.disconnect()コールが続かなければなりません。

それはで終わるという点でこれは--debug出力から見ることができます。私たちは見てのための新しい方法を持っているNoFlo 0.8で DATA -> ENCODING Read() DISC

1

で終わる成功例と比較してください ParseCSV() OUT -> IN Write() CONN ParseCSV() OUT -> IN Write() DATA

network.getActiveProcessesは、現在アクティブなプロセスのプロセスIDの配列を返します。

これは、誤って動作するコンポーネントを見つける場合に便利です。

関連する問題