Python3 asyncio JSONRPC module

jsonrpc, async, asyncio, aio, json, rpc
pip install aiojsonrpc2==1.0.0


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.


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

pip install aiojsonrpc2


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]`

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.