Skip to main content

async4jsonrpc: Asynchronous python module for JSON-RPC

Project description

GitHub | Gitee

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

server-test.py

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

client-test.py

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

  1. Python object class example: thing.py
class Thing(object):
    def __init__(self, name):
        self.name = name
  1. 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

  1. improve

Project details


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 details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

async4jsonrpc-1.0.0-py3-none-any.whl (12.3 kB view details)

Uploaded Python 3

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

Hashes for async4jsonrpc-1.0.0.tar.gz
Algorithm Hash digest
SHA256 e8efc3479a2a3a08cd572595910732056ce82ea5337da0f6dc83d28efb5c2a08
MD5 2975e2e82b87edcedd25d0b2c24fce17
BLAKE2b-256 28b98beb88ee89fe32012e74eb1df8a45a82e23a4f250b2b03f51073d1e06436

See more details on using hashes here.

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

Hashes for async4jsonrpc-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 895ed6b909674b03964f650f4b52d880ef90a7998417fa1c82aa227da51f7330
MD5 c8fa9998e1835c1f3bc760d6ce64e764
BLAKE2b-256 c7e9175f8d02bdf4f2fddc1d6f4c4fc72da7adb00b3d694bc712d9d6d4e45d4f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page