RPC¶
This sections contains module documentation of rpc module.
client¶
Module client provides common way to initialize message queue client of any supported provider. It implements factory design pattern, each client provides class RPCClient. Unit tests available at hydratk/lib/network/rpc/client/01_methods_ut.jedi
Following providers are supported:
- RMI - module rmi_client
- XMLRPC - module xmlrpc_client
- JSONRPC - module jsonrpc_client
Methods :
- RPCClient
Creates RPCClient instance of given engine (use provider name, case is ignored). Any constructor parameters can be passed as args, kwargs (supported for rmi_client only). When provider is not supported NotImplementedError is raised.
from hydratk.lib.network.rpc.client import RPCClient c1 = RPCClient('RMI') c2 = RPCClient('RMI', jvm_path='path/to/jvm')
rpc_client¶
Module provides class RPCClient which implements client for RMI using Java bridge. Unit tests available at hydratk/lib/network/rpc/rmi_client/01_methods_ut.jedi
When PyPy is used method JMSClient raises NotImplementedError. External module JPype1 is not compatible without any alternative.
Attributes :
- _mh - MasterHead reference
- _bridge - Java bridge instance
- _proxy - proxy to remote object
Properties (Getters) :
- bridge - returns _bridge
- proxy - returns _proxy
Methods :
- __init__
Constructor called by RPCClient method. Provides parameters jvm_path, classpath, options. See Java bridge documentation for more details, usually the parameters mustn’t be provided, they are determined from default configuration.
- close
Stops JVM.
- init_proxy
Methods initializes proxy to remote object. First fires event rpc_before_init_proxy where parameter url can be rewritten. The method uses standard Java method java.rmi.Naming.lookup. After successful initialization fires event rpc_after_init_proxy and returns bool.
from hydratk.lib.network.rpc.client import RPCClient c = RPCClient('RMI') url = 'rmi://127.0.0.1:2004/server' res = c.init_proxy(url)
- call_method
Methods call remote method using proxy object. First fires event rpc_before_call_method where parameters (name, args) can be rewritten. It calls proxy method name and passes parameters as args. When it receives response fires event rpc_after_call_method and returns method output.
# no parameters res = c.call_method('callRemote') # output int parameter res = c.call_method('out_int') # returns 666 # output string parameter res = c.call_method('out_string') # input int, output int parameters res = c.call_method('in_int', 2) # returns 8 # 2 input int, output string parameters res = c.call_method('in2', 3, 5) # returns '35'
xmlrpc_client¶
Module provides class RPCClient which implements client for XML-RPC using standard module xmlrpclib. When Python3 is used module xmlrpclib is replaced by xmlrpc <https://docs.python.org/3/library/xmlrpc.client.html> Unit tests available at hydratk/lib/network/rpc/xmlrpc_client/01_methods_ut.jedi.
Attributes :
- _mh - MasterHead reference
- _proxy - proxy to remote object
Properties (Getters) :
- proxy - returns _proxy
Methods :
- __init__
Constructor called by RPCClient method. Sets MasterHead reference.
- init_proxy
Methods initializes proxy to remote object. First fires event rpc_before_init_proxy where parameters (url, timeout) can be rewritten. The method uses xmlrpclib constructor ServerProxy. After successful initialization fires event rpc_after_init_proxy and returns bool. Connection timeout is 10s by default (parameter timeout).
from hydratk.lib.network.rpc.client import RPCClient c = RPCClient('XMLRPC') url = 'http://127.0.0.1:8000' res = c.init_proxy(url)
- call_method
Methods call remote method using proxy object. First fires event rpc_before_call_method where parameters (name, args) can be rewritten. It calls proxy method name and passes parameters as args. When it receives response fires event rpc_after_call_method and returns method output.
# no parameters res = c.call_method('callRemote') # output int parameter res = c.call_method('out_int') # returns 666 # output string parameter res = c.call_method('out_string') # input int, output int parameters res = c.call_method('in_int', 2) # returns 8 # 2 input int, output string parameters res = c.call_method('in2', 3, 5) # returns '35'
jsonrpc_client¶
Module provides class RPCClient which implements client for JSON-RPC using external module jsonrpclib in version >= 0.1.7. When Python3 is used module jsonrpclib is replaced by jsonrpclib-pelix in version >= 0.2.8. Unit tests available at hydratk/lib/network/rpc/jsonrpc_client/01_methods_ut.jedi.
Attributes :
- _mh - MasterHead reference
- _proxy - proxy to remote object
Properties (Getters) :
- proxy - returns _proxy
Methods :
- __init__
Constructor called by RPCClient method. Sets MasterHead reference.
- init_proxy
Methods initializes proxy to remote object. First fires event rpc_before_init_proxy where parameters (url, timeout) can be rewritten. The method uses jsonrpclib constructor Server. After successful initialization fires event rpc_after_init_proxy and returns bool. Connection timeout is 10s by default (parameter timeout).
from hydratk.lib.network.rpc.client import RPCClient c = RPCClient('JSONRPC') url = 'http://127.0.0.1:7999' res = c.init_proxy(url)
- call_method
Methods call remote method using proxy object. First fires event rpc_before_call_method where parameters (name, args) can be rewritten. It calls proxy method name and passes parameters as args. When it receives response fires event rpc_after_call_method and returns method output.
# no parameters res = c.call_method('callRemote') # output int parameter res = c.call_method('out_int') # returns 666 # output string parameter res = c.call_method('out_string') # input int, output int parameters res = c.call_method('in_int', 2) # returns 8 # 2 input int, output string parameters res = c.call_method('in2', 3, 5) # returns '35'