Client#
Misc#
JSON-RPC client.
- class pjrpc.client.AbstractClient(request_class=<class 'pjrpc.common.v20.Request'>, response_class=<class 'pjrpc.common.v20.Response'>, batch_request_class=<class 'pjrpc.common.v20.BatchRequest'>, batch_response_class=<class 'pjrpc.common.v20.BatchResponse'>, error_cls=<class 'pjrpc.common.exceptions.JsonRpcError'>, id_gen_impl=<function sequential>, json_loader=<function loads>, json_dumper=<function dumps>, json_encoder=<class 'pjrpc.common.common.JSONEncoder'>, json_decoder=None, strict=True, request_args=None, tracers=(), retry_strategy=None)[source]#
Bases:
BaseAbstractClient
Abstract synchronous JSON-RPC client.
- Parameters:
batch_request_class (Type[BatchRequest]) –
batch_response_class (Type[BatchResponse]) –
error_cls (Type[JsonRpcError]) –
id_gen_impl (Callable[[...], Generator[Union[str, int], None, None]]) –
json_encoder (Type[JSONEncoder]) –
json_decoder (Optional[JSONDecoder]) –
strict (bool) –
retry_strategy (Optional[RetryStrategy]) –
- call(method, *args, _trace_ctx=namespace(), **kwargs)[source]#
Makes JSON-RPC call.
- Parameters:
method (str) – method name
args (Any) – method positional arguments
kwargs (Any) – method named arguments
_trace_ctx (SimpleNamespace) – tracers request context
- Returns:
response result
- Return type:
- send(request, _trace_ctx=namespace(), _retry_strategy=UNSET, **kwargs)[source]#
Sends a JSON-RPC request.
- Parameters:
request (Request) – request instance
kwargs (Any) – additional client request argument
_trace_ctx (SimpleNamespace) – tracers request context
_retry_strategy (Union[UnsetType, RetryStrategy]) – request retry strategy
- Returns:
response instance
- Return type:
- class pjrpc.client.AbstractAsyncClient(request_class=<class 'pjrpc.common.v20.Request'>, response_class=<class 'pjrpc.common.v20.Response'>, batch_request_class=<class 'pjrpc.common.v20.BatchRequest'>, batch_response_class=<class 'pjrpc.common.v20.BatchResponse'>, error_cls=<class 'pjrpc.common.exceptions.JsonRpcError'>, id_gen_impl=<function sequential>, json_loader=<function loads>, json_dumper=<function dumps>, json_encoder=<class 'pjrpc.common.common.JSONEncoder'>, json_decoder=None, strict=True, request_args=None, tracers=(), retry_strategy=None)[source]#
Bases:
BaseAbstractClient
Abstract asynchronous JSON-RPC client.
- Parameters:
batch_request_class (Type[BatchRequest]) –
batch_response_class (Type[BatchResponse]) –
error_cls (Type[JsonRpcError]) –
id_gen_impl (Callable[[...], Generator[Union[str, int], None, None]]) –
json_encoder (Type[JSONEncoder]) –
json_decoder (Optional[JSONDecoder]) –
strict (bool) –
retry_strategy (Optional[RetryStrategy]) –
- property batch: AsyncBatch#
Client batch wrapper.
- async send(request, _trace_ctx=namespace(), _retry_strategy=UNSET, **kwargs)[source]#
Sends a JSON-RPC request.
- Parameters:
request (Request) – request instance
kwargs (Any) – additional client request argument
_trace_ctx (SimpleNamespace) – tracers request context
_retry_strategy (Union[UnsetType, RetryStrategy]) – request retry strategy
- Returns:
response instance
- Return type:
- async call(method, *args, _trace_ctx=namespace(), **kwargs)[source]#
Makes JSON-RPC call.
- Parameters:
method (str) – method name
args (Any) – method positional arguments
kwargs (Any) – method named arguments
_trace_ctx (SimpleNamespace) – tracers request context
- Returns:
response result
- Return type:
- class pjrpc.client.AsyncBatch(client)[source]#
Bases:
BaseBatch
Asynchronous batch wrapper. Used to make asynchronous JSON-RPC batch requests.
- Parameters:
client (AbstractAsyncClient) –
- class Proxy(batch)[source]#
Bases:
BaseProxy
- Parameters:
batch (AsyncBatch) –
- async call(_trace_ctx=namespace())[source]#
Makes an RPC call.
- Parameters:
_trace_ctx (SimpleNamespace) – tracers request context
- Return type:
- async call(_trace_ctx=namespace())[source]#
Makes a JSON-RPC request.
- Parameters:
_trace_ctx (SimpleNamespace) – tracers request context
- Returns:
request results as a tuple
- Return type:
- async send(request, _trace_ctx=namespace(), **kwargs)[source]#
Sends a JSON-RPC batch request.
- Parameters:
request (BatchRequest) – request instance
kwargs (Any) – additional client request argument
_trace_ctx (SimpleNamespace) – tracers request context
- Returns:
response instance
- Return type:
- class pjrpc.client.BaseBatch(client)[source]#
Bases:
ABC
Base batch wrapper. Implements some methods to wrap multiple JSON-RPC requests into a single batch request.
- Parameters:
client (BaseAbstractClient) – JSON-RPC client instance
- class BaseProxy(batch)[source]#
Bases:
ABC
Proxy object. Provides syntactic sugar to make method calls using dot notation.
- Parameters:
batch (BaseBatch) – batch wrapper
- abstract call(_trace_ctx=namespace())[source]#
Makes a JSON-RPC request.
- Parameters:
_trace_ctx (SimpleNamespace) – tracers request context
- Returns:
request results as a tuple
- Return type:
- abstract send(request, _trace_ctx=namespace(), **kwargs)[source]#
Sends a JSON-RPC batch request.
- Parameters:
request (BatchRequest) – request instance
kwargs (Any) – additional client request argument
_trace_ctx (SimpleNamespace) – tracers request context
- Returns:
response instance
- Return type:
Optional[Union[Awaitable[Optional[BatchResponse]], BatchResponse]]
- class pjrpc.client.BaseAbstractClient(request_class=<class 'pjrpc.common.v20.Request'>, response_class=<class 'pjrpc.common.v20.Response'>, batch_request_class=<class 'pjrpc.common.v20.BatchRequest'>, batch_response_class=<class 'pjrpc.common.v20.BatchResponse'>, error_cls=<class 'pjrpc.common.exceptions.JsonRpcError'>, id_gen_impl=<function sequential>, json_loader=<function loads>, json_dumper=<function dumps>, json_encoder=<class 'pjrpc.common.common.JSONEncoder'>, json_decoder=None, strict=True, request_args=None, tracers=(), retry_strategy=None)[source]#
Bases:
ABC
Base abstract JSON-RPC client.
- Parameters:
batch_request_class (Type[BatchRequest]) – batch request class
batch_response_class (Type[BatchResponse]) – batch response class
error_cls (Type[JsonRpcError]) – JSON-RPC error base class
id_gen_impl (Callable[[...], Generator[Union[str, int], None, None]]) – identifier generator
json_encoder (Type[JSONEncoder]) – json encoder
json_decoder (Optional[JSONDecoder]) – json decoder
strict (bool) – if
True
checks that a request and a response identifiers matchrequest_args (Optional[Dict[str, Any]]) – backend request argument
retry_strategy (Optional[RetryStrategy]) – request retry strategy
- class Proxy(client)[source]#
Bases:
object
Proxy object. Provides syntactic sugar to make method call using dot notation.
- Parameters:
client (BaseAbstractClient) – JSON-RPC client instance
- class pjrpc.client.Batch(client)[source]#
Bases:
BaseBatch
Batch wrapper. Implements some methods to wrap multiple JSON-RPC requests into a single batch request.
- Parameters:
client (AbstractClient) – JSON-RPC client instance
- class Proxy(batch)[source]#
Bases:
BaseProxy
- Parameters:
batch (Batch) –
- call(_trace_ctx=namespace())[source]#
Makes an RPC call.
- Parameters:
_trace_ctx (SimpleNamespace) – tracers request context
- Return type:
- call(_trace_ctx=namespace())[source]#
Makes a JSON-RPC request.
- Parameters:
_trace_ctx (SimpleNamespace) – tracers request context
- Returns:
request results as a tuple
- Return type:
- send(request, _trace_ctx=namespace(), **kwargs)[source]#
Sends a JSON-RPC batch request.
- Parameters:
request (BatchRequest) – request instance
kwargs (Any) – additional client request argument
_trace_ctx (SimpleNamespace) – tracers request context
- Returns:
response instance
- Return type:
- class pjrpc.client.LoggingTracer(logger=<Logger pjrpc.client (WARNING)>, level=10)[source]#
Bases:
Tracer
JSON-RPC client logging tracer.
- on_request_begin(trace_context, request)[source]#
Handler called before JSON-RPC request begins.
- Parameters:
trace_context (SimpleNamespace) – request trace context
request (AbstractRequest) – JSON-RPC request
- Return type:
None
- on_request_end(trace_context, request, response)[source]#
Handler called after JSON-RPC request ends.
- Parameters:
trace_context (SimpleNamespace) – request trace context
request (AbstractRequest) – JSON-RPC request
response (Optional[AbstractResponse]) – JSON-RPC response
- Return type:
None
- on_error(trace_context, request, error)[source]#
Handler called when JSON-RPC request failed.
- Parameters:
trace_context (SimpleNamespace) – request trace context
request (AbstractRequest) – JSON-RPC request
error (BaseException) – raised exception
- Return type:
None
- class pjrpc.client.Tracer[source]#
Bases:
object
JSON-RPC client tracer.
- on_request_begin(trace_context, request)[source]#
Handler called before JSON-RPC request begins.
- Parameters:
trace_context (SimpleNamespace) – request trace context
request (AbstractRequest) – JSON-RPC request
- Return type:
None
- on_request_end(trace_context, request, response)[source]#
Handler called after JSON-RPC request ends.
- Parameters:
trace_context (SimpleNamespace) – request trace context
request (AbstractRequest) – JSON-RPC request
response (Optional[AbstractResponse]) – JSON-RPC response
- Return type:
None
- on_error(trace_context, request, error)[source]#
Handler called when JSON-RPC request failed.
- Parameters:
trace_context (SimpleNamespace) – request trace context
request (AbstractRequest) – JSON-RPC request
error (BaseException) – raised exception
- Return type:
None
Backends#
- class pjrpc.client.backend.requests.Client(url, session=None, **kwargs)[source]#
Bases:
AbstractClient
Requests library client backend.
- Parameters:
url (str) – url to be used as JSON-RPC endpoint.
session (Optional[Session]) – custom session to be used instead of
requests.Session
kwargs (Any) – parameters to be passed to
pjrpc.client.AbstractClient
- class pjrpc.client.backend.aiohttp.Client(url, session_args=None, session=None, **kwargs)[source]#
Bases:
AbstractAsyncClient
Aiohttp library client backend.
- Parameters:
url (str) – url to be used as JSON-RPC endpoint
session_args (Optional[Dict[str, Any]]) – additional
aiohttp.ClientSession
argumentssession (Optional[ClientSession]) – custom session to be used instead of
aiohttp.ClientSession
kwargs (Any) –
- class pjrpc.client.backend.kombu.Client(broker_url, queue_name=None, conn_args=None, exchange_name=None, exchange_args=None, routing_key=None, result_queue_name=None, result_queue_args=None, **kwargs)[source]#
Bases:
AbstractClient
kombu based JSON-RPC client. Note: the client is not thread-safe.
- Parameters:
broker_url (str) – broker connection url
conn_args (Optional[Dict[str, Any]]) – broker connection arguments.
queue_name (Optional[str]) – queue name to publish requests to
exchange_name (Optional[str]) – exchange to publish requests to. If
None
default exchange is usedexchange_args (Optional[Dict[str, Any]]) – exchange arguments
routing_key (Optional[str]) – reply message routing key. If
None
queue name is usedresult_queue_name (Optional[str]) – result queue name. If
None
random exclusive queue is declared for each requestconn_args – additional connection arguments
kwargs (Any) – parameters to be passed to
pjrpc.client.AbstractClient
- class pjrpc.client.backend.aio_pika.Client(broker_url, queue_name=None, conn_args=None, exchange_name=None, exchange_args=None, routing_key=None, result_queue_name=None, result_queue_args=None, **kwargs)[source]#
Bases:
AbstractAsyncClient
aio_pika based JSON-RPC client.
- Parameters:
broker_url (URL) – broker connection url
conn_args (Optional[Dict[str, Any]]) – broker connection arguments.
queue_name (Optional[str]) – queue name to publish requests to
exchange_name (Optional[str]) – exchange to publish requests to. If
None
default exchange is usedexchange_args (Optional[Dict[str, Any]]) – exchange arguments
routing_key (Optional[str]) – reply message routing key. If
None
queue name is usedresult_queue_name (Optional[str]) – result queue name. If
None
random exclusive queue is declared for each requestconn_args – additional connection arguments
kwargs (Any) – parameters to be passed to
pjrpc.client.AbstractClient
Tracer#
- class pjrpc.client.tracer.Tracer[source]#
Bases:
object
JSON-RPC client tracer.
- on_request_begin(trace_context, request)[source]#
Handler called before JSON-RPC request begins.
- Parameters:
trace_context (SimpleNamespace) – request trace context
request (AbstractRequest) – JSON-RPC request
- Return type:
None
- on_request_end(trace_context, request, response)[source]#
Handler called after JSON-RPC request ends.
- Parameters:
trace_context (SimpleNamespace) – request trace context
request (AbstractRequest) – JSON-RPC request
response (Optional[AbstractResponse]) – JSON-RPC response
- Return type:
None
- on_error(trace_context, request, error)[source]#
Handler called when JSON-RPC request failed.
- Parameters:
trace_context (SimpleNamespace) – request trace context
request (AbstractRequest) – JSON-RPC request
error (BaseException) – raised exception
- Return type:
None
- class pjrpc.client.tracer.LoggingTracer(logger=<Logger pjrpc.client (WARNING)>, level=10)[source]#
Bases:
Tracer
JSON-RPC client logging tracer.
- on_request_begin(trace_context, request)[source]#
Handler called before JSON-RPC request begins.
- Parameters:
trace_context (SimpleNamespace) – request trace context
request (AbstractRequest) – JSON-RPC request
- Return type:
None
- on_request_end(trace_context, request, response)[source]#
Handler called after JSON-RPC request ends.
- Parameters:
trace_context (SimpleNamespace) – request trace context
request (AbstractRequest) – JSON-RPC request
response (Optional[AbstractResponse]) – JSON-RPC response
- Return type:
None
- on_error(trace_context, request, error)[source]#
Handler called when JSON-RPC request failed.
- Parameters:
trace_context (SimpleNamespace) – request trace context
request (AbstractRequest) – JSON-RPC request
error (BaseException) – raised exception
- Return type:
None
Retry#
- class pjrpc.client.retry.Backoff(attempts, jitter=<function Backoff.<lambda>>)[source]#
Bases:
object
JSON-RPC request retry strategy.
- class pjrpc.client.retry.PeriodicBackoff(attempts, jitter=<function Backoff.<lambda>>, interval=1.0)[source]#
Bases:
Backoff
Periodic request retry strategy.
- class pjrpc.client.retry.ExponentialBackoff(attempts, jitter=<function Backoff.<lambda>>, base=1.0, factor=2.0, max_value=None)[source]#
Bases:
Backoff
Exponential request retry strategy.
- class pjrpc.client.retry.FibonacciBackoff(attempts, jitter=<function Backoff.<lambda>>, multiplier=1.0, max_value=1.0)[source]#
Bases:
Backoff
Fibonacci request retry strategy.
- class pjrpc.client.retry.RetryStrategy(backoff, codes=None, exceptions=None)[source]#
Bases:
object
JSON-RPC request retry strategy.
- pjrpc.client.retry.retry(func, retry_strategy)[source]#
Synchronous function retry decorator.
- Parameters:
func (Callable[[...], AbstractResponse]) – function to be retried
retry_strategy (RetryStrategy) – retry strategy to be applied
- Returns:
decorated function
- Return type:
Callable[[…], AbstractResponse]
- pjrpc.client.retry.retry_async(func, retry_strategy)[source]#
Asynchronous function retry decorator.
- Parameters:
func (Callable[[...], Awaitable[AbstractResponse]]) – function to be retried
retry_strategy (RetryStrategy) – retry strategy to be applied
- Returns:
decorated function
- Return type:
Callable[[…], Awaitable[AbstractResponse]]