【发布时间】:2019-11-09 21:08:25
【问题描述】:
我正在编写一个简单的网络应用程序来了解节点子进程的工作方式。基本上,您将您的姓名输入到一个角度前端,该前端将名称传递给 javascript 对象中的一个快速后端。后端使用 child_process 模块将名称作为参数传递给简单的 python 脚本作为命令行参数。前端没有问题,名称成功传递到后端,但是当我在 python 进程上调用 stdout 时,它不起作用。没有任何错误消息。
这里是快递代码:
app.post('/api', (req, res, next) => {
console.log(req.body.name);
const spawn = require('child_process').spawn;
const process = spawn('python3', ['./hello.py', req.body.name]);
process.stdout.on('data', (data) => {
console.log(data);
res.status(200).json({greeting: data});
});
});
我在代码中放了两条 console.log 语句来调试它。第一个打印数据,但 stdout 函数中的第二个根本不调用。 python脚本与app.js express文件在同一个文件夹中,所以我很确定文件路径没有问题。
这是python脚本:
import sys
print('hello' + sys.argv[1])
sys.stdout.flush()
当我在命令行中运行它时,它的工作方式完全符合预期,但为了以防万一,我还是包含了它。
【问题讨论】:
-
有一个很棒的存储库已经实现了 node.js 和 python 之间的接口。与您的方式非常相似。也许它会为您的目的提供解决方案和灵感来源:github.com/extrabacon/python-shell