rpyc python rpc 框架

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

posted on 2024-09-29 17:02  荣锋亮  阅读(20)  评论(0编辑  收藏  举报

导航