Source code for smartrpyc.client.pirate

import zmq

from smartrpyc import utils
from smartrpyc.client import base, exceptions


[docs]class Lazy(base.Client): def __init__(self, retries=3, timeout=1000, **kwargs): self._retries = retries self._timeout = timeout super(Lazy, self).__init__(**kwargs) @utils.lazy_property def _poller(self): poller = zmq.Poller() poller.register(self._socket, zmq.POLLIN) return poller def _get_response(self, request, retries=None): if not retries is None and retries <= 0: self._socket.setsockopt(zmq.LINGER, 0) self._socket.close() self._poller.unregister(self._socket) raise exceptions.ServerUnavailable("") socks = dict(self._poller.poll(self._timeout)) if socks.get(self._socket) == zmq.POLLIN: return super(Lazy, self)._get_response(request) retries = (retries or self._retries) - 1 return self._get_response(request, retries=retries)