rpyc 属于一个老牌项目了,支持rpc 模式的处理,同时支持面向服务的开发模式,包含了一些安全控制,支持服务注册,服务发现
包含的特性
- 透明,可以使用类似本地模式的方法访问
- 对称,client 以及server 都可以支持调用
- 支持同步以及异步操作
- 平台无关
- 低开销
- 安全,支持基于tls,以及ssh 的访问模式
- zero deploy 支持(基于plumbum)
- 支持面向服务的开发模式,支持服务发现
参考玩法
- 启动注册中心
./venv/bin/rpyc_registry -l enable
- server 服务
import rpyc
from rpyc import Service
from rpyc.utils.server import ThreadedServer
@rpyc.service
class MyService(Service):
# 定义服务名称
ALIASES = ["MyService"]
def on_connect(self, conn):
print("Connected")
def on_disconnect(self, conn):
print("Disconnected")
@rpyc.exposed
def get_answer(self):
return 42
@rpyc.exposed
def get_question(self):
return "what is the answer to everything?"
server = ThreadedServer(MyService,port=18861,auto_register=True)
server.start()
- client
import rpyc
list_service = rpyc.list_services()
# 基于服务名称的链接,如果是多个服务会选择第一个
info = rpyc.connect_by_service("MyService").root.get_answer()
print(info)
说明
rpyc 属于一个比较老的项目了,当然注意使用,以及安全问题(推荐开启ssl 支持)
参考资料
https://rpyc.readthedocs.io/en/latest/index.html
https://github.com/tomerfiliba-org/rpyc
https://rpyc.readthedocs.io/en/latest/docs/zerodeploy.html#zerodeploy