从Node.Js应用程序运行Python脚本

时间:2019-01-05 08:32:04

标签: python node.js

我绝对喜欢在我的Web项目中使用Node.JS,但是我也喜欢同时使用Python,所以我一直在想,是否可以从Node运行Python脚本,例如我的Node.JS后端调用一个从SQL数据库中检索一些数据并将其返回给Node的python脚本(我知道我可以在Node中完成所有操作,而只是使用一个示例)。

我曾经考虑过要这样做

1.Node创建一个Json文件,其中包含Python脚本将使用的变量(例如,名称:Jon birthDate:1996)
2.它运行一个python脚本,该脚本从该Json文件中读取这些变量(因此它将搜索1996年出生的Jon)
3.完成后删除Json文件
4.冲洗并重复

这是做这种事情的好方法吗?或者还有其他方法可以运行和“修改” Python脚本吗?

1 个答案:

答案 0 :(得分:0)

我必须构建一个节点应用程序,但是对于后端计算,使用NumPy和Pandas似乎更好,所以我做了您正在做的...最终,我找到了一个名为python-shell的npm软件包。

它通过promise工作,因此我将调用我的计算脚本,并且如果有任何错误,还将使用另一个Python脚本进行一些清理。

工作得很好。代码是这样的:

const PythonShell = require('python-shell');

router.get('/calc', (req, res) => {
    PythonShell.run('py/calculate.py', {pyPath: pyPath , args: [tmpPath],}, function(err, results) {
        if (err) {
            PythonShell.run('py/clean_up.py', {pyPath: pyPath, args: [tmpPath2]}, function(err, results2) {
                if (err) throw err;
                res.json(
                    {
                        message: "error: Running clean up",
                        ang: 0,
                        vec: 0,
                    }
                );
            });
        } else {
            let data = JSON.parse(results);
            let message = data[0];
            let ang = data[1];
            let vec = data[2];
            res.json(
                {
                    message: message,
                    ang: ang,
                    vec: vec,
                }
            );
        }
    });
});