Skip to content

Commit 886098e

Browse files
author
paskozdilar
committed
Fix logs and add client retry_timeout
1 parent 4ac18ab commit 886098e

File tree

2 files changed

+20
-16
lines changed

2 files changed

+20
-16
lines changed

zrpc/client.py

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121

2222

2323
class Client:
24-
def __init__(self, socket_dir=None):
24+
def __init__(self, socket_dir=None, retry_timeout=None):
2525
socket_dir = os.path.abspath(socket_dir or '/tmp/zrpc_sockets')
2626

2727
context = zmq.Context.instance()
@@ -30,7 +30,9 @@ def __init__(self, socket_dir=None):
3030
self._context = context
3131
self._poller = zmq.Poller()
3232
self._sockets = sockets
33+
3334
self._socket_dir = socket_dir
35+
self._retry_timeout = retry_timeout or 1
3436

3537
try:
3638
os.makedirs(socket_dir, exist_ok=True)
@@ -41,8 +43,8 @@ def __init__(self, socket_dir=None):
4143

4244
def __del__(self):
4345
try:
44-
for socket in self._sockets:
45-
socket.close(linger=0)
46+
for socket_name in list(self._sockets.keys()):
47+
self.__disconnect(socket_name)
4648
except AttributeError:
4749
pass
4850

@@ -61,7 +63,7 @@ def __connect(self, socket_name):
6163
sockets[socket_name] = socket
6264

6365
self._poller.register(socket, zmq.POLLIN)
64-
logger.debug('Connected to "%s"' % socket_name)
66+
logger.debug('Connected to "%s"', socket_name)
6567

6668
def __disconnect(self, socket_name):
6769
sockets = self._sockets
@@ -73,7 +75,7 @@ def __disconnect(self, socket_name):
7375
socket.close(linger=0)
7476

7577
self._poller.unregister(socket)
76-
logger.debug('Disconnected from "%s"' % socket_name)
78+
logger.debug('Disconnected from "%s"', socket_name)
7779

7880
def call(self, server, method, args=(), kwargs={}, timeout=None):
7981
"""
@@ -99,17 +101,17 @@ def call(self, server, method, args=(), kwargs={}, timeout=None):
99101
current_time = start_time
100102
elapsed_time = current_time - start_time
101103

102-
iter_timeout = 1
104+
retry_timeout = self._retry_timeout
103105
while elapsed_time <= timeout:
104106
socket.send(request)
105-
timeout_ms = 1000 * max(0, min(iter_timeout, timeout - elapsed_time))
106-
logging.debug('Polling sockets with {}ms timeout'.format(timeout_ms))
107+
timeout_ms = 1000 * max(0, min(retry_timeout, timeout - elapsed_time))
108+
logging.debug('Polling sockets with %s ms timeout', timeout_ms)
107109
events = dict(self._poller.poll(timeout=timeout_ms))
108110

109111
if socket in events:
110112
break
111113

112-
logger.error('No response from "%s"- reconnecting...' % server)
114+
logger.error('No response from "%s" - reconnecting...' % server)
113115
self.__disconnect(server)
114116
self.__connect(server)
115117
socket = sockets[server]

zrpc/server.py

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -38,12 +38,12 @@ def __init__(self, maxsize=128, *args, **kwds):
3838

3939
def __getitem__(self, key):
4040
value = super().__getitem__(key)
41-
Server.move_to_end(self, key)
41+
self.move_to_end(key)
4242
return value
4343

4444
def __setitem__(self, key, value):
4545
if key in self:
46-
Server.move_to_end(self, key)
46+
self.move_to_end(key)
4747
super().__setitem__(key, value)
4848
if len(self) > self.maxsize:
4949
oldest = next(iter(self))
@@ -78,7 +78,8 @@ def __init__(self, name=None, socket_dir=None):
7878
self.__started = False
7979

8080
def __del__(self):
81-
Server.stop(self)
81+
if self.__started:
82+
Server.stop(self)
8283

8384
def __enter__(self):
8485
Server.start(self)
@@ -89,7 +90,7 @@ def __exit__(self, exc_type, exc_value, exc_traceback):
8990

9091
def start(self):
9192
if self.__started:
92-
return
93+
raise RuntimeError('Server already started')
9394

9495
name = self.__name
9596
socket_dir = self.__socket_dir
@@ -137,7 +138,7 @@ def start(self):
137138
def stop(self):
138139
try:
139140
if not self.__started:
140-
return
141+
raise RuntimeError('Server already started')
141142
self.__socket.close(linger=0)
142143
os.unlink(self.__socket_path)
143144
except (OSError, AttributeError):
@@ -197,9 +198,9 @@ def run_once(self, timeout=None):
197198
socket = self.__socket
198199
poller = self.__poller
199200

200-
self.__logger.info('Polling for requests...')
201+
self.__logger.debug('Polling for requests...')
201202
ready_sockets = dict(poller.poll(timeout=timeout))
202-
self.__logger.info('Ready_sockets: {}'.format(ready_sockets))
203+
self.__logger.debug('Ready_sockets: {}'.format(ready_sockets))
203204

204205
for ready_socket in ready_sockets:
205206
if ready_socket is socket:
@@ -221,6 +222,7 @@ def __handle_request(self, socket):
221222

222223
if request_id in self.__cache:
223224
# resend response silently
225+
self.__logger.debug('Returning request from cache: %s', request_id)
224226
response_data = self.__cache[request_id]
225227
socket.send(self.__cache[request_id])
226228
return

0 commit comments

Comments
 (0)