Lightweight Remote Procedure Call framework. Only two components are of importance:
RpcServer
- A long-running server, where callables can be registered.
remote_call
- A single-use client, to call procedures on an RpcServer.
On the server side, you can define and register callables. These are then exposed by name:
def pingpong(*args, **kwargs): return args, kwargs with RpcServer(23000) as server: server.register(pingpong) server.run()
On the client side, you can directly dispatch a remote_call
.
This will block until a reply is available:
remote_call('localhost', 23000, 'pingpong', 'hello', 'world')
This is a simple RPC library, primarily for prototyping and education setups. It uses a JSON based protocol, which protects against undesired code execution. Any complex protocols, such as packed or pickle based data, can be implemented on top.