Điều này nghe có vẻ như một kịch bản trong đó zeroMQ sẽ phù hợp. Đó là một khung nhắn tin tương tự như sử dụng các socket TCP hoặc Unix, nhưng nó mạnh mẽ hơn nhiều ( http://zguide.zeromq.org/py:all )
Có một thư viện sử dụng zeroMQ để cung cấp khung RPC hoạt động khá tốt. Nó được gọi là zeroRPC ( http://www.zerorpc.io/ ). Đây là thế giới xin chào.
Máy chủ Python "Xin chào x":
import zerorpc
class HelloRPC(object):
'''pass the method a name, it replies "Hello name!"'''
def hello(self, name):
return "Hello, {0}!".format(name)
def main():
s = zerorpc.Server(HelloRPC())
s.bind("tcp://*:4242")
s.run()
if __name__ == "__main__" : main()
Và ứng dụng khách node.js:
var zerorpc = require("zerorpc");
var client = new zerorpc.Client();
client.connect("tcp://127.0.0.1:4242");
//calls the method on the python object
client.invoke("hello", "World", function(error, reply, streaming) {
if(error){
console.log("ERROR: ", error);
}
console.log(reply);
});
Hoặc ngược lại, máy chủ node.js:
var zerorpc = require("zerorpc");
var server = new zerorpc.Server({
hello: function(name, reply) {
reply(null, "Hello, " + name, false);
}
});
server.bind("tcp://0.0.0.0:4242");
Và khách hàng trăn
import zerorpc, sys
c = zerorpc.Client()
c.connect("tcp://127.0.0.1:4242")
name = sys.argv[1] if len(sys.argv) > 1 else "dude"
print c.hello(name)