2017-09-07 22 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客戶端。
相關問題