async4jsonrpc: Asynchronous python module for JSON-RPC
Project description
async4jsonrpc
This library is an asynchronous python library for the JSON-RPC specification.
It is licensed under the Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.html).
Installation
Install from PyPi via pip:
pip3 install async4jsonrpc
Features
- Compliant with the JSON-RPC 2.0 specification
- High performance by asyncio and coroutine
- Json serialization support via jsonpickle
Usage
Server Usage
from async4jsonrpc.server import JsonRpcServer
# create RPC json server
server = JsonRpcServer()
# registers a function to respond to RPC requests.
server.register_function(lambda x, y: x + y, 'add')
server.register_function(lambda x: x, 'ping')
# start to serve RPC request
server.serve('localhost', 8080)
Client Usage
import asyncio
from async4jsonrpc.client import JsonRpcClient
# create RPC json client
client = JsonRpcClient('127.0.0.1', 8080)
async def call_rpc(i):
# rpc: send rpc request
r = await client.ping(f'hello {i}')
print(r)
asyncio.run(call_rpc('shi'))
Json serialize
I use jsonpickle library for serialization and deserialization of complex Python objects to and from JSON
- Python object class example: thing.py
class Thing(object):
def __init__(self, name):
self.name = name
- Client call rpc with a python object: client-test.py
import asyncio
from async4jsonrpc.client import JsonRpcClient
from tests.thing import Thing
# create RPC json client
client = JsonRpcClient('127.0.0.1', 8080)
async def call_object_rpc():
obj = Thing('Awesome')
r = await client.ping(obj)
print(r)
asyncio.run(call_object_rpc())
TODO
- improve
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
async4jsonrpc-1.0.0.tar.gz
(10.6 kB
view hashes)
Built Distribution
Close
Hashes for async4jsonrpc-1.0.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 895ed6b909674b03964f650f4b52d880ef90a7998417fa1c82aa227da51f7330 |
|
MD5 | c8fa9998e1835c1f3bc760d6ce64e764 |
|
BLAKE2b-256 | c7e9175f8d02bdf4f2fddc1d6f4c4fc72da7adb00b3d694bc712d9d6d4e45d4f |