def read(self, len=1024, buffer=None):
        while True:
            try:
                if buffer is not None:
                    return self._sslobj.read(len, buffer)
                else:
                    return self._sslobj.read(len or 1024)
            except SSLWantReadError:
                if self.timeout == 0.0:
                    raise
                self._trampoline(self.fileno(), READ, timeout=self.gettimeout(),
                                 timeout_exc=_SSLErrorReadTimeout)
            except SSLWantWriteError:
                if self.timeout == 0.0:
                    raise
                # note: using _SSLErrorReadTimeout rather than _SSLErrorWriteTimeout below is
                # intentional
                self._trampoline(self.fileno(), WRITE, timeout=self.gettimeout(),
                                 timeout_exc=_SSLErrorReadTimeout)
            except SSLError as ex:
                if ex.args[0] == SSL_ERROR_EOF and self.suppress_ragged_eofs:
                    if buffer is None:
                        return ''
                    else:
                        return 0
                else:
                    raise
Read up to `len` bytes
dataset/ETHPy150Open veegee/guv/guv/green/_ssl33.py/SSLSocket.read