Skip to main content

asyncio MsgPack RPC

Project description

aio-msgpack-rpc

pipeline status coverage report

Pure asyncio implementation of the MsgPack RPC.
Uses transports, protocols and streams provided by the asyncio standard library.

Just a simple implementation of the RPC layer.

Installation

pip install aio-msgpack-rpc

Example

Server

import asyncio
import aio_msgpack_rpc


# handlers can be defined on a class
# they can either be async or plain functions
class MyServicer:
    async def sum(self, x, y):
        print(f"sum: {x}, {y}")
        return x + y

    def notification(self, msg):
        print(f"notification: {msg}")


async def main():
    try:
        server = await asyncio.start_server(aio_msgpack_rpc.Server(MyServicer()), host="localhost", port=18002)

        while True:
            await asyncio.sleep(0.1)
    finally:
        server.close()

try:
    asyncio.get_event_loop().run_until_complete(main())
except KeyboardInterrupt:
    pass

Client

import asyncio
import aio_msgpack_rpc

async def main():
    client = aio_msgpack_rpc.Client(*await asyncio.open_connection("localhost", 18002))

    # blocking rpc calls
    result = await client.call("sum", 1, 2)
    assert result == 3

    # one way notifications
    client.notify("notification", "hello")

asyncio.get_event_loop().run_until_complete(main())

Benchmark

Some basic performance benchmarks against the official implementation on my development machine.

package call (QPS) notify (QPS)
msgpack-rpc-python 5414 11746
aio-msgpack-rpc 5781 86957

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for aio-msgpack-rpc, version 0.1.0
Filename, size File type Python version Upload date Hashes
Filename, size aio_msgpack_rpc-0.1.0-py3-none-any.whl (5.7 kB) File type Wheel Python version py3 Upload date Hashes View
Filename, size aio-msgpack-rpc-0.1.0.tar.gz (8.2 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page