【发布时间】:2020-11-24 18:21:39
【问题描述】:
我想从我的 node-express 应用程序运行一个 python 脚本(当一个端点被命中时)。 我想将请求的主体作为命令行参数(或者如果有任何其他方式)传递给 python 脚本。
我还希望将脚本返回的数据作为响应返回。
谁能帮助我有效地实现这一目标。
【问题讨论】:
标签: python node.js express command-line-arguments
我想从我的 node-express 应用程序运行一个 python 脚本(当一个端点被命中时)。 我想将请求的主体作为命令行参数(或者如果有任何其他方式)传递给 python 脚本。
我还希望将脚本返回的数据作为响应返回。
谁能帮助我有效地实现这一目标。
【问题讨论】:
标签: python node.js express command-line-arguments
您好
您可以在 nodejs 代码中使用“child_process”包并运行您的 python 脚本并与之通信
那是你的python代码
# hello.py
import random, time
while True:
time.sleep(random.random() * 5) # wait 0 to 5 seconds
text = "Hello number " + (random.random() * 100)
print(text, flush=True, end='')
这将是你的 js 代码
const { spawn } = require('child_process');
const messages = []; // Store readings
const sensor = spawn('python', ['hello.py']);
sensor.stdout.on('data', function(data) {
messages.push(parseFloat(data));
// Log to debug
console.log(messages);
});
如果您想将参数传递给您的 Python 源代码,请执行此操作
const myList = ["foo", "bar", "baz"];
const { spawn } = require("child_process");
const python = spawn('python',["script.py", JSON.stringify(myList)]);
这就是你的 Python 代码
# script.py
import sys, json
if __name__ == '__main__':
my_list = json.loads(sys.argv[1])
【讨论】: