aiojsonrpc2

Python3 asyncio JSONRPC module


Keywords
jsonrpc, async, asyncio, aio, json, rpc
License
MIT
Install
pip install aiojsonrpc2==1.0.0

Documentation

aiojsonrpc2 is a Python3 JSONRPC module built using asyncio.

  • Supports Python 3.5+ only (uses async/await syntax)
  • Plain socket transport (not JSONRPC over HTTP)
  • Supports secure TLS (ie. SSL) sockets

This is a new, fast, and modern JSONRPC module originally built to support aiostratum_proxy (a next-gen, extensible cryptocurrency mining proxy). However, releasing it as it's own independent Python package made the most sense.

Installation

There are currently no external dependencies required for aiojsonrpc2, and installation is simple:

pip install aiojsonrpc2

Usage

To use aiojsonrpc2 and depending on your needs, you need to implement either a client or server 'protocol'. Both ClientProtocol and ServerProtocol let you handle bi-directional JSONRPC communication.

All incoming JSONRPC requests infer a protocol instance method from the JSONRPC method parameter. For example, if the method contains client.show_message, then the protocol class implementation must have an instance method called handle_client_show_message:

from aiojsonrpc2 import ClientProtocol, ServerProtocol

class MyClientProtocol(ClientProtocol):
    # NOTE: the opposing connection (perhaps a server) would
    # have sent the `client.show_message` request;
    # bidirectional communication!
    def handle_client_show_message(self, connection, params, **kwargs):
        # assuming the message to show is `params[0]`
        print(params[0])

Note how all . (ie. full stops/periods) from the JSONRPC method parameter are replaced by _ (ie. underscore).

Future Considerations

Community involvement is appreciated. Code review, pull requests for bug fixes & improvements, reporting issues, spreading the word - all appreciated.

TODO: