Skip to main content

JSON-RPC 2.0 client library for Python 3

Project description

Make remote procedure calls with JSON-RPC 2.0.

Installation

pip install jsonrpcclient

Usage

Set the server details, then start making requests.

>>> from jsonrpcclient import Server
>>> server = Server('http://example.com/api')
>>> server.request('add', 2, 3)
5

The first argument to request is the method; everything else is passed as params. You can pass any number of positional or keyword arguments, and they will be translated into JSON-RPC.

>>> server.request('find', 42, name='Foo')
--> {"jsonrpc": "2.0", "method": "find", "params": [42, {"name": "Foo"}], "id": 1}
<-- 200 {"jsonrpc": "2.0", "result": "Bar", "id": 1}
Bar

If you don’t need any data returned, use notify instead of request.

>>> server.notify('go')
--> {"jsonrpc": "2.0", "method": "go"}
<-- 200 OK

Alternate usage

If you prefer, there’s another way to call a remote procedure:

>>> server.add(2, 3, response=True)

Which is the same as saying server.request('add', 2, 3).

Use response=True to get a response; without that it’s a notification.

Authentication

To make authenticated requests, pass a second argument to Server.

>>> server = Server('http://example.com/api', auth=('user', 'pass'))

For more options, see the requests package which handles the authentication.

Exceptions

Catch the base exception JsonRpcClientError when communicating with the server. This will be raised when there’s an issue such as connection problems, or if the server responded with an error response.

from jsonrpcclient.exceptions import JsonRpcClientError
try:
    server.request('go')
except JsonRpcClientError as e:
    print(str(e))

Issue tracker is here.

If you need a server, try my jsonrpcserver library.

Todo

Changelog

1.0.11 - 2014-12-12
  • Rewrote an internal function, rpc.request.

1.0.10 - 2014-12-11
  • Exceptions have been cleaned up. The base exception is now named JsonRpcClientError.

  • Tests added for 100% code coverage.

1.0.9 - 2014-12-02
  • Added authentication.

  • Messages are now output on the INFO log level.

1.0.8 - 2014-12-02
  • Show the response status code in the log.

1.0.7 - 2014-11-21
  • When using the “alternate” (server.add) method to make a request, only send “id” if response=True is explicitly passed (fixed)

  • The underlying JSON messages are now hidden by default. To see them you should increase the logging level (see above).

  • Tests moved into separate “tests” dir.

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

jsonrpcclient-1.0.11.tar.gz (6.4 kB view details)

Uploaded Source

File details

Details for the file jsonrpcclient-1.0.11.tar.gz.

File metadata

File hashes

Hashes for jsonrpcclient-1.0.11.tar.gz
Algorithm Hash digest
SHA256 81a87e0830d52a57c1084d6ad40d8f407534a44d7f8d0b7c30e156033e2e3e17
MD5 7c2e3a5422b476bae6d05ca7951299ed
BLAKE2b-256 4c0ed840dec97b0e18ad85a905ddc8a3fcbd18afd9e4217dec27e6f384bc8274

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page