我正在尝试获取一个(“永不结束”)python脚本放入标准输出的行。但是目前我的代码只在python进程退出时才将一些内容记录到控制台。有没有办法可以逐行获取python脚本的“实时”输出?
spawn_child.js:
let execFile = require("child_process").execFile;
var child = execFile("python3", ["PATH_TO_FILE"]);
child.stdout.on("data", data=>{
console.log(data.toString());
});
child.stderr.on("data", data=>{
console.log(data.toString());
});
child.on("exit", code=>{
console.log("Child exited with code "+code);
});
python文件:
from time import sleep
while True:
sleep(3)
print("test")
编辑:当使用nodejs脚本而不是python脚本时,它可以正常工作
3条答案
按热度按时间h9a6wy2h1#
更改python脚本到
并增加子进程的缓冲区大小
也可以不使用python-shell刷新到stdout
hc8w905p2#
使用spawn而不是execFile,不要忘记选项
shell
和stdio
。您还可以添加
cwd
选项。gg0vcinb3#
尝试在NextJS应用程序中实现类似的东西,并希望从我的python脚本中实时输出,使用
python-shell
也有同样的问题,即只有当进程存在时才给我输出,我最终使用node-pty
代替,这符合预期: