自述文件.md
项目描述
SimRpc
为什么选择 SimRpc
当今所有流行的 rpc 框架,都是快速且稳定的。
但这还不足以让您轻松开始。你必须接受所有 rpc 的定义,了解它们的结构,并且你必须使你的代码适应它们。
因此,如果您不喜欢它们,并且您没有其他选择。可能SimRpc适合你
说明
SimRpc 是一个 rpc 工具,可让您轻松地将代码传输到 rpc 服务(客户端和服务器端),构建在 zeromq 和 msgpack 之上。
-
零MQ
确保消息传输极其快速和稳定
-
消息包
使消息变得非常小
用法
您的原始代码
class a:
def minus(self, x, y):
print("x+y=", x - y)
return x - y
def add(x, y):
return x + y
客户端
1)启动一个客户端实例
from simrpc.client import SimRpcClient
rpc_client = SimRpcClient()
或者也许你想开始一个特定的地址
from simrpc.client import SimRpcClient
rpc_client = SimRpcClient(server_address="tcp://localhost:6666")
server_address是zeromq 地址。
有关更多信息,您可以参考zeromq。
2) 将 @rpc_client.task 装饰器添加到您的代码中
# response_only=True means you only want the result
class a:
@rpc_client.task(response_only=True)
def minus(self, x, y):
print("x+y=", x - y)
return x - y
# func=True means this is a funcion,not a class service
@rpc_client.task(response_only=True,func=True)
def add(x, y):
return x + y
3)像往常一样使用这些功能
a().minus(4,5,rpc_client=True)
您必须指出这是一个 rpc 客户端(使用 rpc_client=True 参数),否则将使用本地代码
服务器端
1)启动一个服务器实例
from server import SimRpcServer
server = SimRpcServer()
像客户端一样,您也可以为服务器提供特定的地址。
范围 | 价值 | 操作说明 |
---|---|---|
device_front_address | “tcp://127.0.0.1:5559” | 接收消息的地址。用于客户端连接。 |
device_backend_address | “tcp://127.0.0.1:5560” | 向 service worker 发送消息的地址。 |
工人地址 | “tcp://127.0.0.1:5560” | 工人连接到的地址。通常与 device_backend_address 相同。有关高级信息,您可以参考 zeromq |
支持更多的地址方式(如ipc),可以参考zeromq
2)将您的服务注册到服务器
- 像往常一样初始化你的课堂服务
service = a()
server.register(service)
- 或者您让服务器初始化您的服务(只需将您的初始化参数传递给服务器。)
settings = {
"a": {
"kwargs": {
"name": "test"
}
}
}
service = a()
server.register(service)
# or you can have this class init with server
# server.register_with_init(cls_list=[a], settings=settings)
3) 启动你的 RPC 服务器代理
server.start_broker()
# if you also want to start worker in process ,you could use server.run(),this will start a few workers.
# server.run()
使用此代理,您可以轻松地从客户端和服务器端扩展您的服务
4)开始更多的工人
# the same as above but without server.start_broker()
server.run()
具体可以参考例子
依赖
编码
- 喜欢这个项目,给它加星
- 欢迎任何建议
- 这个项目在 MIT 许可下
更多文档正在编写。