A Lightweight RPC framework for Python
Project description
thirpc: A Lightweight RPC Framework for Python
===
This library provides a base class and some decorators to make it easy to build distributed applications. RPC endpoints are defined as class methods and decorated with ```RpcModule.Method```, which registers the endpoint with the event-based RPC server dispatching requests to registered methods.
The ```RpcRemote``` class is an abstraction allowing applications to invoke methods on remote nodes using method call syntax. See the example below for an illustration!
```python
'''
Simple RPC server responding to invocations of the
'hello' method with a pleasant greeting
'''
import sys
from thinrpc import RpcModule, RpcRemote, RpcApplication
class FooNode(RpcApplication):
def __init__(self, port, name):
self.addr = ("localhost", port)
self.name = name
# Start the RPC server
self.Start()
@RpcModule.Method
def hello(self, sender):
return "Hi, %s! It's %s" % (sender, self.name)
if __name__ == '__main__':
node = FooNode(9090, "Anson")
```
And now for a simple client script that invokes the ```hello``` method on the server application defined above.
```python
import thinrpc
import sys
# Say hi to the server!
server = thinrpc.RpcRemote(("localhost", 9090))
print(server.hello())
# {'ok': True, 'result': "Hi, ('127.0.0.1', 44222)! It's Anson"}
```
===
This library provides a base class and some decorators to make it easy to build distributed applications. RPC endpoints are defined as class methods and decorated with ```RpcModule.Method```, which registers the endpoint with the event-based RPC server dispatching requests to registered methods.
The ```RpcRemote``` class is an abstraction allowing applications to invoke methods on remote nodes using method call syntax. See the example below for an illustration!
```python
'''
Simple RPC server responding to invocations of the
'hello' method with a pleasant greeting
'''
import sys
from thinrpc import RpcModule, RpcRemote, RpcApplication
class FooNode(RpcApplication):
def __init__(self, port, name):
self.addr = ("localhost", port)
self.name = name
# Start the RPC server
self.Start()
@RpcModule.Method
def hello(self, sender):
return "Hi, %s! It's %s" % (sender, self.name)
if __name__ == '__main__':
node = FooNode(9090, "Anson")
```
And now for a simple client script that invokes the ```hello``` method on the server application defined above.
```python
import thinrpc
import sys
# Say hi to the server!
server = thinrpc.RpcRemote(("localhost", 9090))
print(server.hello())
# {'ok': True, 'result': "Hi, ('127.0.0.1', 44222)! It's Anson"}
```
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
thinrpc-0.1.13.tar.gz
(3.4 kB
view hashes)
Built Distribution
Close
Hashes for thinrpc-0.1.13.linux-x86_64.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | d3e26a9c28f36c3063cda101f3b715270789d781f036a77b201f89f45a183557 |
|
MD5 | 8823d43ab0c6ed3cf3c2b9073a22fd89 |
|
BLAKE2b-256 | d653f0fdec28d2918261752d3dcf9c55be66ba17eba28f9ce49516d773753e1a |