创建nodejs的子进程并在数组中编写

时间:2018-08-08 19:43:15

标签: javascript python node.js async-await

我对nodejs的子进程有疑问,

我从子进程中执行python脚本,首先我调用该脚本,然后编写了给我数据的小函数,接下来是代码:

let Ids = ["221374899","186959187"];

const py = spawn(sails.config.python.path, 
    [sails.config.python.scriptMain], 
    {detached: true});


const ListenTask = async () => {

    py.stdout.on('data', buff => {
        const data = buff.toString().split('\n')
        console.log('FROM DATA: ', data)
    });
}

const ListenEndTask = async () => {

    py.stdout.on('end', () => {
        console.log('FROM END: ', 'here i dispatch data of ListenTask')
    });
}

const PayloadExecute = (element) => {

    let payload = {
      "function": "user-basic-data",
      "data": {
        "username": 'test',
        "password": 'xxxtest',
        "user_id": element
      }
    };

    py.stdin.write(JSON.stringify(payload));

}

const executeInOrder = async () => {
    for (let i = 0; i < Ids.length; i++) {
        const element = Ids[i];
        await ListenTask();
        await ListenEndTask();
        await PayloadExecute(element); 
        await py.stdin.end();
    }

}

awaitforcontinue();

const py拥有python脚本的路由,并抬起python控制台(>>>)

现在,根据数组,我需要随时用python编写,但是我对结束函数await py.stdin.end();有疑问

  

UnhandledPromiseRejectionWarning:错误:结束后写入       在writeAfterEnd(_stream_writable.js:236:12)       在Socket.Writable.write(_stream_writable.js:287:5)

如何一次取消python控制台,并根据数组随时编写并保存答案?最后用await py.stdin.end();停止程序吗?

我尝试使用异步/等待,但我不知道为什么代码停止了。

谢谢。

0 个答案:

没有答案