2017-09-07 21 views
0

我有一个驻留在Web服务器(运行node.js)并执行一些机器学习计算的python脚本。必须使用运行在Web浏览器中的JavaScript将数据提供给python脚本。如何才能做到这一点?我想知道完整的设置。目前,服务器只是本地主机。服务器端的python脚本和web浏览器中的javascript之间的通信

+0

一种方法是让您的浏览器端JavaScript通过API将数据发送到您的服务器。然后让你的服务器端JavaScript调用Python脚本并像传递Bash命令一样传递数据[通过使用exec](https://stackoverflow.com/questions/37732331/execute-bash-command-in-节点-JS-和得到退出代码)。 –

回答

0

我相信你需要一个简单的API接受来自客户端的输入,可以通过JavaScript来完成。

有几种技术,你可以看看:

  • 阿贾克斯。
  • WebSockets。
0

最好的方法是使用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/'); 
}); 

虽然这里的示例代码相对简单,但它应该让您开始。此设置的整体逻辑如下:

  1. 使用快速摆脱网页数据(存储为req.body.name
  2. 拿这个数据,并通过zerorpc发送到你的Python服务器,它可以处理数据和将其发送回Node.js zerorpc客户端。
相关问题