我正在尝试使用子进程在我的快速服务器上运行我的python程序。如果它是普通的NodeJS,则该方法有效,但它不能在我的API端点上工作。
var spawn = require('child_process').spawn,
a = spawn('python', ['test.py']);
router.get('/test', function(req, res, next) {
a.stdout.on('data', function(data){
console.log(data.toString());
});
a.stdin.write(JSON.stringify("Hello"));
a.stdin.end();
});
python程序只打印你好。
这里有什么问题,我该如何解决。
谢谢!
答案 0 :(得分:3)
在没有看到您的test.py
源代码的情况下,我假设test.py
在输出所有数据后退出。如果是这种情况,您需要将呼叫转移到路由处理程序中的spawn()
。
如果经常调用此路由处理程序,您可能需要考虑使用某种队列/池来限制在任何给定时间生成的进程数。没有它你就可以耗尽系统资源。