【问题标题】:communicate between python script on server side and javascript in the web-browser在服务器端的 python 脚本和 web 浏览器中的 javascript 之间进行通信
【发布时间】:2017-09-07 14:01:56
【问题描述】:
我有一个 Python 脚本,它驻留在网络服务器(运行 node.js)上并进行一些机器学习计算。必须使用在 web 浏览器中运行的 javascript 将数据提供给 python 脚本。如何才能做到这一点?我想知道完整的设置。目前,服务器只是本地主机。
【问题讨论】:
-
一种方法是让您的浏览器端 JavaScript 通过 API 将数据发送到您的服务器。然后让你的服务器端 JavaScript 调用 Python 脚本并传入数据,就好像它是一个 Bash 命令by using exec。
标签:
javascript
python
node.js
socket.io
【解决方案1】:
最好的方法是使用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/');
});
虽然这里的示例代码相对简单,但它应该可以帮助您入门。这个设置的整体逻辑如下:
- 使用express从网页获取数据(存储为
req.body.name)
- 获取此数据并通过
zerorpc 将其发送到您的Python 服务器,该服务器可以处理数据并将其发送回Node.js zerorpc 客户端。
【解决方案2】:
我相信您需要在服务器上提供一个简单的 API,它可以通过 JavaScript 接受来自客户端的输入。
您可以看看以下几种技术: