SimpleXMLRPCServer 是基于 xml-rpc 实现的远程调用,上面我们也提到 除了 xml-rpc 之外,还有 json-rpc 协议。
那 python 如何实现基于 json-rpc 协议呢?
答案是很多,很多web框架其自身都自己实现了json-rpc,但我们要独立这些框架之外,要寻求一种较为干净的解决方案,我们使用 jsonrpclib

1.6.1 安装

  1. pip install jsonrpclib-pelix -i https://pypi.douban.com/simple

它与 Python 标准库的 SimpleXMLRPCServer 很类似(因为它的类名就叫做 SimpleJSONRPCServer ,不明真相的人真以为它们是亲兄弟)。或许可以说,jsonrpclib 就是仿照 SimpleXMLRPCServer 标准库来进行编写的。
它的导入与 SimpleXMLRPCServer 略有不同,因为SimpleJSONRPCServer分布在jsonrpclib库中。

1.6.2 代码

服务端

  1. from jsonrpclib.SimpleJSONRPCServer import SimpleJSONRPCServer
  2. server = SimpleJSONRPCServer(('localhost', 8081))
  3. server.register_function(pow)
  4. server.register_function(lambda x,y: x+y, 'add')
  5. server.register_function(lambda x: x, 'ping')
  6. server.serve_forever()

客户端

  1. import jsonrpclib
  2. server = jsonrpclib.ServerProxy('http://localhost:8081')
  3. print(server.add(5,6))