A Python server implementaion of JSON-RPC 2.0 over HTTP
Project description
Rufmich
A Python server implementaion of JSON-RPC 2.0 over HTTP.
Introduction
rufmich implements the JSON-RPC 2.0 specification with a few minor changes:
- The transport protocol is HTTP.
- A notification request will get an immediate response. Usually the server will start the procedure and return the response immediately (without having to wait for the procedure to finish). And there is no callback for the procedure, which means the client would not be aware of any errors.
- Method namespacing is supported (and recommended).
Notification
Notification is implemented using threading. A method without id will be invoked in a new thread.
Batch
If multiple requests are sent in a batch, they will be processed concurrently by a thread pool.
User Guide
Installation
pip install rufmich
Define methods
Create a folder with following structure:
- <your_methods_workspace>
- root
root.py
- <A>
<A.py>
- <B>
<B.py>
- <C>
<C.py>
An example is:
- my_methods
- root
root.py
- registration
registration.py
- by_email
by_email.py
Note that there MUST BE a directory named root under your workspace folder.
Each namespace folder MUST HAVE a .py file with the same name as the folder. The methods defined in those .py files will be indexed according to the folder hierarchy.
Examples:
- A method
foobardefined inroot.pyis indexed to"foobar"and"::foobar" - A method
send_code_to_emaildefined inby_email.pyin the above example is indexed to"registration::by_email::send_code_to_email"(and"::registration::by_email::send_code_to_email")
Run
from rufmich.server import RMServer
server = RMServer(load_path=<your_methods_workspace>)
server.run(port=<port>)
Client examples
Project details
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file rufmich-1.0.0.tar.gz.
File metadata
- Download URL: rufmich-1.0.0.tar.gz
- Upload date:
- Size: 3.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.19.1 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.0 CPython/3.7.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b9190224d0ba4f072c1e157fb5226b51cfd752b9be181c507c01637fc11b4087
|
|
| MD5 |
aa30c554166fafda451f438c3644be04
|
|
| BLAKE2b-256 |
caabdb16522710f3c98d580a4b1e52cbf767fa3b8f25f49bec2d17ca17ad19c1
|
File details
Details for the file rufmich-1.0.0-py3-none-any.whl.
File metadata
- Download URL: rufmich-1.0.0-py3-none-any.whl
- Upload date:
- Size: 17.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.19.1 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.0 CPython/3.7.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a7365215b4bd41d1abff8725552a8c60e72f9daf8d5089cb588af8e5da3cf49a
|
|
| MD5 |
3e2a2d02acf2dc968cbd548773263aab
|
|
| BLAKE2b-256 |
bd483200f26bf647f495d6522003604665695dcfd5679135fa9e3d4cb8a32177
|