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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file async4jsonrpc-1.0.0.tar.gz.
File metadata
- Download URL: async4jsonrpc-1.0.0.tar.gz
- Upload date:
- Size: 10.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.8.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e8efc3479a2a3a08cd572595910732056ce82ea5337da0f6dc83d28efb5c2a08
|
|
| MD5 |
2975e2e82b87edcedd25d0b2c24fce17
|
|
| BLAKE2b-256 |
28b98beb88ee89fe32012e74eb1df8a45a82e23a4f250b2b03f51073d1e06436
|
File details
Details for the file async4jsonrpc-1.0.0-py3-none-any.whl.
File metadata
- Download URL: async4jsonrpc-1.0.0-py3-none-any.whl
- Upload date:
- Size: 12.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.8.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
895ed6b909674b03964f650f4b52d880ef90a7998417fa1c82aa227da51f7330
|
|
| MD5 |
c8fa9998e1835c1f3bc760d6ce64e764
|
|
| BLAKE2b-256 |
c7e9175f8d02bdf4f2fddc1d6f4c4fc72da7adb00b3d694bc712d9d6d4e45d4f
|