code: def recv(self, timeout=None):
          
          if timeout:
              try:
                  testsock = self._zmq.select([self.socket], [], [], timeout)[0]
              except zmq.ZMQError as e:
                  if e.errno == errno.EINTR:
                      testsock = None
                  else:
                      raise
              if not testsock:
                  return
              rv = self.socket.recv(self._zmq.NOBLOCK)
              return LogRecord.from_dict(json.loads(rv))
          else:
              return super(ZeroMQPullSubscriber, self).recv(timeout)
docs: Overwrite standard recv for timeout calls to catch interrupt errors.