【问题标题】:Spawning child process with express end-point使用 express 端点生成子进程
【发布时间】:2016-07-18 18:21:33
【问题描述】:

我正在尝试使用子进程在我的 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。

这里有什么问题,我该如何解决。

谢谢!

【问题讨论】:

    标签: python node.js express child-process


    【解决方案1】:

    没有看到您的test.py 源代码,我假设test.py 在输出所有数据后退出。如果是这种情况,您需要将您的呼叫移至路由处理程序内部spawn()

    如果经常调用此路由处理程序,您可能需要考虑使用某种队列/池来限制在任何给定时间产生多少进程。否则,您可能会耗尽系统资源。

    【讨论】:

    • python 文件在主文件中只有一行:print("Hello")
    • “不工作”并没有告诉我太多。有错误吗?发生了什么或没有发生什么?
    • 没有错误。浏览器不断重新加载....在我的节点控制台中,我没有得到任何代码(如 500)...除此之外,什么都没有...
    • 您是否在路由处理程序中添加了res.end() 或类似名称?
    猜你喜欢
    • 1970-01-01
    • 2017-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-10
    • 2015-10-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多