在服务器端的python脚本和web浏览器中的javascript之间进行通信
我有一个python脚本,它驻留在web服务器上(运行node.js),并执行一些机器学习计算。必须使用在web浏览器中运行的javascript将数据提供给python脚本。如何做到这一点?我想知道完整的设置。目前,服务器只是本地主机 我相信服务器上需要一个简单的API,它可以接受来自客户端的输入,这可以通过JavaScript完成 您可以看看以下几种技术:在服务器端的python脚本和web浏览器中的javascript之间进行通信,javascript,python,node.js,socket.io,Javascript,Python,Node.js,Socket.io,我有一个python脚本,它驻留在web服务器上(运行node.js),并执行一些机器学习计算。必须使用在web浏览器中运行的javascript将数据提供给python脚本。如何做到这一点?我想知道完整的设置。目前,服务器只是本地主机 我相信服务器上需要一个简单的API,它可以接受来自客户端的输入,这可以通过JavaScript完成 您可以看看以下几种技术: 阿贾克斯 网袋 最好的方法是使用zerorpc,这是一个用于Python和Node.js的套接字服务器和客户端 在Python上安装:
- 阿贾克斯
- 网袋
- 最好的方法是使用
zerorpc
,这是一个用于Python和Node.js的套接字服务器和客户端
在Python上安装:
pip install zerorpc
在节点上安装:
npm install zerorpc
Python服务器文件:
import zerorpc
class HelloRPC(object):
def hello(self, name):
print "message from host: %s" % name
return raw_input("Enter your message: ")
s = zerorpc.Server(HelloRPC())
s.bind("tcp://0.0.0.0:4242")
s.run()
Node.js客户端文件:
var express = require('express');
var bodyParser = require('body-parser');
var app = express();
var zerorpc = require("zerorpc");
var client = new zerorpc.Client();
client.connect("tcp://127.0.0.1:4242");
app.use(bodyParser.urlencoded({ extended: true }));
app.post('/myaction', function(req, res) {
client.invoke("hello", "RPC", function(error, res, more) {
console.log(res);
res.send(req.body.name);
});
});
app.listen(8080, function() {
console.log('Server running at http://127.0.0.1:8080/');
});
虽然这里的示例代码相对简单,但它应该可以帮助您开始。此设置的总体逻辑如下所示:
req.body.name
)zerorpc
将其发送到Python服务器,该服务器可以处理数据并将其发送回Node.jszerorpc
客户端一种方法是让浏览器端JavaScript通过API将数据发送到服务器。然后让您的服务器端JavaScript调用Python脚本,并像传递Bash命令一样传递数据。