Simple JSON-RPC service without transport layer
Project description
JSONRPCBase
NOTE: This is a fork of level12/jsonrpcbase with changes maintained by KBase
Simple JSON-RPC service without transport layer
This library is intended as an auxiliary library for easy an implementation of JSON-RPC services with Unix/TCP socket like transport protocols that do not have complex special requirements. You need to utilize some suitable transport protocol with this library to actually provide a working JSON-RPC service.
Features
- Easy to use, small size, well tested.
- Supports JSON-RPC v2.0. Compatible with v1.x style calls with the exception of v1.0 class-hinting.
- Optional argument type validation that significantly eases development of jsonrpc method_data.
Example
Example usage:
import jsonrpcbase
chat_service = jsonrpcbase.JSONRPCService()
def login(username, password, timelimit=0):
# (...)
return True
def receive_message(**kwargs):
# (...)
return chat_message
def send_message(msg):
# (...)
pass
if __name__ == '__main__':
# Adds the method login to the service as a 'login'.
chat_service.add(login, types=[basestring, basestring, int])
# Adds the method receive_message to the service as a 'recv_msg'.
chat_service.add(receive_message, name='recv_msg', types={"msg": basestring, "id": int})
# Adds the method send_message as a 'send_msg' to the service.
chat_service.add(send_message, 'send_msg')
# Receive a JSON-RPC call.
jsonmsg = my_socket.recv()
# Process the JSON-RPC call.
result = chat_service.call(jsonmsg)
# Send back results.
my_socket.send(result)
Development
Install poetry and run poetry install
.
Run tests with make test
.
Deploy with poetry build
and poetry publish
.
Credits
This project was originally developed by Juhani Åhman.
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
Built Distribution
Hashes for kbase_jsonrpcbase-0.3.0a3.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | afb7abe24929cfcf8045e499c5089b523edee90a0502d6c5bed9f6d0bc421089 |
|
MD5 | e2c4e421dd221e1949094d943428173e |
|
BLAKE2b-256 | c3c65363a57589bf808c80e2ee273c1b8d6cd453e812e5c6163c0a4d5b5c0ac2 |
Hashes for kbase_jsonrpcbase-0.3.0a3-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 725ebb68f73eb535a7670651f9aad49277a5d69bb457e4f3e79ff288337d3d52 |
|
MD5 | 0e5b7c8d57249d1cd5a6a7c77b7fb87f |
|
BLAKE2b-256 | 8497278f414fcb32c8c572137dcfc91bbf7f055b7b717a1a3e4372ad75816a42 |