2016-11-30 2 views
0

Я пытаюсь запустить простой граф, используя noflo-filesystem и noflo-csv, который читает CSV-файл, анализирует его и записывает в файл. Вопрос заключается в том, что программа ждет чего-то, что я не знаю, как обеспечить:noflo не может завершить работу

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 

Когда я бегу

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

я получаю:

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 

И тогда программа висит.

Я пытался кормить Write «S IN порт с только строки, как:

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 полагать, что сеть еще не запущена, поэтому процесс не завершается. Оба звонка .send() в the component должны сопровождаться вызовом .disconnect().

Это можно увидеть из вывода --debug в том, что она заканчивается: ParseCSV() OUT -> IN Write() CONN ParseCSV() OUT -> IN Write() DATA

Сравнение с успешным примером, который заканчивается DATA -> ENCODING Read() DISC

1

С NoFlo 0,8 мы имеем новый способ видеть какие процессы поддерживают жизнеобеспечение сети:

network.getActiveProcesses возвращает массив идентификаторов процессов для активных в настоящее время процессов.

Это полезно для поиска компонентов, плохо работающих.

Смежные вопросы