From f4a5b38cabb4ca99120592423e80d387c557fc8a Mon Sep 17 00:00:00 2001 From: Bruce Merry Date: Mon, 25 Mar 2019 10:23:14 +0200 Subject: [PATCH] Eliminate some redundant code PR #236 had some copy-and-paste in check_can_read that's now eliminated. --- fakeredis/_server.py | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/fakeredis/_server.py b/fakeredis/_server.py index d0c50cc..2889cd9 100644 --- a/fakeredis/_server.py +++ b/fakeredis/_server.py @@ -2474,21 +2474,12 @@ def can_read(self, timeout=0): return True if not self._sock: self.connect() - if self._sock.responses.qsize(): - return True - if timeout <= 0: - return False - - # A sleep/poll loop is easier to mock out than messing with condition - # variables. - start = time.time() - while True: - if self._sock.responses.qsize(): - return True - time.sleep(0.01) - now = time.time() - if now > start + timeout: - return False + # We use check_can_read rather than can_read, because on redis-py<3.2, + # FakeSelector inherits from a stub BaseSelector which doesn't + # implement can_read. Normally can_read provides retries on EINTR, + # but that's not necessary for the implementation of + # FakeSelector.check_can_read. + return self._selector.check_can_read(timeout) def _decode(self, response): if isinstance(response, list):