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 hashes)

Uploaded Source

Supported by

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