我正在尝试使用子进程在express服务器中运行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程序只是打印hello。
这里的问题是什么,我该如何解决。
谢谢!
在没有看到test.py
源代码的情况下,我假设test.py
在输出所有数据后退出。如果是这种情况,您将需要将呼叫转移到路由处理程序内的spawn()
。
如果经常调用这个路由处理程序,您可能需要考虑使用某种队列/池来限制在任何给定时间产生的进程数量。否则,您可能会耗尽系统资源。