我需要通过python托管节点js

2024-03-29 09:19:41 发布

您现在位置:Python中文网/ 问答频道 /正文

var util = require('util'); 
var exec = require('child_process').spawn; 
var run = exec('/usr/bin/python', ['-m', 'SimpleHTTPServer', '9002']); 
run.stdout.on('data', function(data){ 
    console.log('stdout: ' + data.toString()); 
    }); 
run.stderr.on('data', function (data) { 
    console.log('stderr: ' + data.toString()); 
    }); 

你知道吗测试.py你知道吗

from bottle import route, run, template

@route('/hello/<name>')
def index(name):
    return template('<b>Hello {{name}}</b>!', name=name)

run(host='localhost', port=9002)

我是新的节点js和python只是我想做沟通之间的节点js到python与localhost。一个简单的python脚本,带有localhost url,在运行node js scrpit后点击node js url,该脚本在node中调用python脚本,并在web浏览器上托管相同的脚本。你知道吗


Tags: runname脚本nodelocalhostdataonvar
1条回答
网友
1楼 · 发布于 2024-03-29 09:19:41

我不完全确定我看到了问题。你的代码行得通。你知道吗

1)确保访问localhost:9002
2) 如果你想运行你的瓶子代码,那么使用

var run = exec('/usr/bin/python', ['/path/to/bottle_server.py']);

img1

至于在Python代码和节点.js代码,然后你需要插座。有些库可以包括socket.io或使用类似zmq的消息传递队列。你知道吗

如果希望与pythonapi进行单向通信,则需要从节点代码执行对http://localhost:9002的HTTP请求。或者,Node非常有能力实现与Python代码中包含的功能相同的功能。你知道吗

编辑

关于下面的评论,这里是一个更新的脚本。您需要inherit父级的stdoutstderr,否则,如上图所示,它认为python正在打印到stderr

var util = require('util');
const spawn = require('child_process').spawn;

var run = spawn('/usr/bin/python', ['-m', 'SimpleHTTPServer', '9002'],
    { stdio: ['ignore', 'inherit', 'inherit' ] });

run.on('exit', (code) => {
  console.log(`Child exited with code ${code}`);
});

img2

相关问题 更多 >