fast JSON-RPC protocol implementation for asyncio, without transport
Project description
aio-jsonrpc-2.0
Description
json rpc 2.0 protocol implementation for asyncio, without transport.
specification: http://www.jsonrpc.org/
Usage:
Example to resolve request:
import asyncio
import json
from aio_jsonrpc_20 import RequestResolver
async def foo(msg):
await asyncio.sleep(0.1)
return 'foobar ' + str(msg)
router = {'foo': foo}
resolver = RequestResolver(router)
json_request = json.dumps(
{"jsonrpc": "2.0", "method": "foo", "params": ["toto"], "id": 1}
)
async def main():
json_response = await resolver.handle(json_request)
print(json_response)
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
Result:
{"jsonrpc": "2.0", "result": "foobar toto", "id": 1}
Example to build request:
from aio_jsonrpc_20 import RequestBuilder
builder = RequestBuilder()
json_request = builder.call(method="foo", params={"name": "bar"})
print(json_request)
json_request = builder.call(method="foo", params={"name": "bar2"})
print(json_request)
json_request = builder.notify(method="log", params=["hello"])
print(json_request)
Result:
{"jsonrpc": "2.0", "method": "foo", "params": {"name": "bar"}, "id": 1}
{"jsonrpc": "2.0", "method": "foo", "params": {"name": "bar2"}, "id": 2}
{"jsonrpc": "2.0", "method": "log", "params": ["hello"]}
Example to build batch request:
from aio_jsonrpc_20 import BatchRequestBuilder
batch_builder = BatchRequestBuilder()
id1 = batch_builder.call(method="foo", params={"name": "bar"})
id2 = batch_builder.call(method="foo2", params={"name": "bar"})
print(id1, id2)
batch_builder.notify(method="foo3", params={"name": "bar"})
json_request = batch_builder.get_request()
print(json_request)
Result:
1 2
[
{"jsonrpc": "2.0", "method": "foo", "params": {"name": "bar"}, "id": 1},
{"jsonrpc": "2.0", "method": "foo2", "params": {"name": "bar"}, "id": 2},
{"jsonrpc": "2.0", "method": "foo3", "params": {"name": "bar"}}
]
TODO:
- Fix definitely interface for builders
- More Test
- Documentation
- Optimisation
- ...
Testing:
py.test --cov=aio_jsonrpc_20 --cov-report term-missing tests/
0.1.2
fix(README): Fixed encoding error
0.1.0
Initial release.
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
aio-jsonrpc-2.0-0.1.2.tar.gz
(7.5 kB
view details)
File details
Details for the file aio-jsonrpc-2.0-0.1.2.tar.gz.
File metadata
- Download URL: aio-jsonrpc-2.0-0.1.2.tar.gz
- Upload date:
- Size: 7.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.0.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.8.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
18e6af68836cb5a2fa1a86a3eaabb6ee0b5c6961d18544e8dd74bb7781b4d949
|
|
| MD5 |
465527e659e32541f64b10997b91cc62
|
|
| BLAKE2b-256 |
d4a343396ee65afb256204a867acbe57d260222d44b247df7c495d2a0e2f5114
|