Python JSON-RPC 2.0 客户端库。
项目描述
安装
poetry add jsonrpc2-pyclient
pip install jsonrpc2-pyclient
RPCClient 抽象类
JSON-RPC 2.0 与传输无关。这个库提供了一个抽象类,可以扩展它来为不同的传输创建客户端。
实现
要为传输创建客户端,请扩展RPCClient类并实现将_send_and_get_json请求作为 str 并期望以 str 或字节字符串返回 JSON-RPC 2.0 响应。
RPCClient有一个call在内部使用它的方法。
提供了一个默认的 HTTP 实现:
class RPCHTTPClient(RPCClient):
"""A JSON-RPC HTTP Client."""
def __init__(self, url: str, headers: Optional[Headers] = None) -> None:
self._client = httpx.Client()
headers = headers or {}
headers["Content-Type"] = "application/json"
self._client.headers = headers
self.url = url
super(RPCHTTPClient, self).__init__()
def __del__(self) -> None:
self._client.close()
@property
def headers(self) -> Headers:
"""HTTP headers to be sent with each request."""
return self._client.headers
@headers.setter
def headers(self, headers) -> None:
self._client.headers = headers
def _send_and_get_json(self, request_json: str) -> Union[bytes, str]:
return self._client.post(self.url, content=request_json).content
用法
将RPCClient处理形成请求和解析响应。要调用具有 的实现的 JSON-RPC 2.0 方法RPCClient,请调用该call方法,将要调用的方法的名称和参数传递给它。
如果响应是 JSON-RPC 2.0 结果对象,则只返回结果,不返回任何包装器。
如果响应是 JSON-RPC 2.0 错误响应,则该错误会抛出异常。
from jsonrpc2pyclient.httpclient import RPCHTTPClient
from jsonrpcobjects.errors import JSONRPCError
client = RPCHTTPClient("http://localhost:5000/api/v1/")
try:
res = client.call("divide", [0, 0])
print(f"JSON-RPC Result: {res}")
except JSONRPCError as e:
print(f"JSON-RPC Error: {e}")
项目详情
关
jsonrpc2_pyclient -2.2.12-py3-none-any.whl 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | fbeb00c278f8a533abb810383e1249473fa1fd71b5f28f6700c322ee40e8922d |
|
| MD5 | 7a66b0f44e36cc803cb58ef24407dc64 |
|
| 布莱克2-256 | 00be9dfb39cff098ff6b0bd9e3a9f0dddd6353a70203a333cedfb1d89655f23d |