【问题标题】:python not working correctly when called from nodejs app with child-process从带有子进程的nodejs应用程序调用时python无法正常工作
【发布时间】:2019-10-24 21:58:21
【问题描述】:

我正在尝试运行一个使用深度学习模型对图像进行分类的 python 脚本,无论它是否是 NSFW,我使用这里的脚本 https://github.com/yahoo/open_nsfw 和一个自定义模型。 python脚本直接用python调用时运行正常,但是当通过子进程从nodejs应用程序调用时,脚本停在这一行

# Pre-load caffe model.
nsfw_net = caffe.Net(model_def, pretrained_model, caffe.TEST)

python 中的其他一切都可以正常工作。直接运行的脚本也可以正常工作。为什么从子进程调用时它不起作用?

当我从这样的节点应用程序运行它时

    const cp = require("child_process")
    const spawn = cp.spawn;
    const pythonProcess = spawn('python',['/home/ubuntu/classify.py']);

    pythonProcess.stdin.write(req.body.image, function(err){
        pythonProcess.stdin.end();
    });

    pythonProcess.stdout.on('data', (data) => {
            console.log("message from python:" + data)
        });

    pythonProcess.stdout.on("end", (data) => {
        console.log("end received data: " + data);
        res.status(200);
        res.end(); 
    });

【问题讨论】:

  • 有什么具体的错误或者它只是挂在那条线上吗?
  • 它只是挂在那条线上,我之前和之后都有日志行,我在输出中看到前行,后行看不到,并且没有错误。这可能是因为 python 进程在加载模型时会输出大量日志,然后难以将所有数据刷新到标准输出?

标签: python node.js child-process


【解决方案1】:

我已通过将pythonProcess.stderr.pipe(process.stderr); 添加到我的 nodejs 应用程序来解决此问题,然后我能够看到 python 错误并修复它们。 python脚本有错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-29
    • 1970-01-01
    • 1970-01-01
    • 2016-12-12
    • 1970-01-01
    • 1970-01-01
    • 2020-02-17
    • 2012-01-02
    相关资源
    最近更新 更多