我有一个Express Node.js应用程序,但我也有一个可以在Python中使用的机器学习算法。有没有一种方法可以从Node.js应用程序中调用Python函数来利用机器学习库的功能?
如何从Node.js调用Python函数
现在,您可以使用支持Python和Javascript的RPC库,例如zerorpc
从他们的首页:
Node.js客户端
var zerorpc = require("zerorpc");
var client = new zerorpc.Client();
client.connect("tcp://127.0.0.1:4242");
client.invoke("hello", "RPC", function(error, res, more) {
console.log(res);
});
Python服务器
import zerorpc
class HelloRPC(object):
def hello(self, name):
return "Hello, %s" % name
s = zerorpc.Server(HelloRPC())
s.bind("tcp://0.0.0.0:4242")
s.run()
我在节点10和子进程上1.0.2
。来自python的数据是一个字节数组,必须进行转换。这是在python中发出http请求的另一个快速示例。
节点
const process = spawn("python", ["services/request.py", "https://www.google.com"])
return new Promise((resolve, reject) =>{
process.stdout.on("data", data =>{
resolve(data.toString()); // <------------ by default converts to utf-8
})
process.stderr.on("data", reject)
})
request.py
import urllib.request
import sys
def karl_morrison_is_a_pedant():
response = urllib.request.urlopen(sys.argv[1])
html = response.read()
print(html)
sys.stdout.flush()
karl_morrison_is_a_pedant()
ps不是一个人为的例子,因为节点的http模块不会加载我需要发出的一些请求
您可以将自己的python进行转换,然后像调用JavaScript一样对其进行调用。我为screeps成功地做到了这一点,甚至得到它在浏览器中运行的LA brython。