【问题标题】: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/');
});

虽然这里的示例代码相对简单,但它应该可以帮助您入门。这个设置的整体逻辑如下:

  1. 使用express从网页获取数据(存储为req.body.name
  2. 获取此数据并通过zerorpc 将其发送到您的Python 服务器,该服务器可以处理数据并将其发送回Node.js zerorpc 客户端。

【讨论】:

    【解决方案2】:

    我相信您需要在服务器上提供一个简单的 API,它可以通过 JavaScript 接受来自客户端的输入。

    您可以看看以下几种技术:

    • 阿贾克斯。
    • WebSockets。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-08
      • 2021-08-16
      相关资源
      最近更新 更多