diff --git a/sjrpc/client/simple.py b/sjrpc/client/simple.py index efa8bf5be80e7db498dd0ea76744541ae0e9fd50..54bf61aef2b80eb4325523dc4f7277b75afcfa37 100644 --- a/sjrpc/client/simple.py +++ b/sjrpc/client/simple.py @@ -26,7 +26,7 @@ class SimpleRpcClient(ConnectionManager): self.register(self._connection) @classmethod - def from_addr(cls, addr, port, enable_ssl=False, cert=None, + def from_addr(cls, addr, port, enable_ssl=False, cert=None, timeout=30.0, default_handler=None, on_disconnect=None): ''' Construct the instance of :class:`SimpleRpcClient` without providing @@ -45,7 +45,7 @@ class SimpleRpcClient(ConnectionManager): disconnects. ''' - connection = RpcConnection.from_addr(addr, port, None, + connection = RpcConnection.from_addr(addr, port, None, timeout=timeout, enable_ssl=enable_ssl, cert=cert) client = cls(connection, default_handler=default_handler, on_disconnect=on_disconnect) diff --git a/sjrpc/core/rpcconnection.py b/sjrpc/core/rpcconnection.py index c5b1daa41d3b1a4ff0df35bcd74f4a2982c6a10e..daa290e40624d856e1d0e514225e80cf503df9ea 100644 --- a/sjrpc/core/rpcconnection.py +++ b/sjrpc/core/rpcconnection.py @@ -57,7 +57,7 @@ class RpcConnection(object): self._manager = manager @classmethod - def from_addr(cls, addr, port, manager, enable_ssl=False, + def from_addr(cls, addr, port, manager, enable_ssl=False, timeout=30.0, cert=None, handler=None): ''' Construct the instance of :class:`RpcConnection` without providing @@ -79,6 +79,7 @@ class RpcConnection(object): req = ssl.CERT_NONE if cert is None else ssl.CERT_REQUIRED sock = ssl.wrap_socket(sock, certfile=None, cert_reqs=req, ssl_version=ssl.PROTOCOL_TLSv1) + sock.settimeout(timeout) sock.connect((addr, port)) sock.setblocking(False) return cls(sock, manager, handler)