def _connect(self): if self._closed: raise PyRedisConnError('Connection Gone') if self.host: sock = self._connect_inet46() else: sock = self._connect_unix() self._sock = sock if self._encoding: self._reader = Reader(encoding=self._encoding) else: self._reader = Reader() if not self._sentinel: self._authenticate() self._setdb() self._sock.settimeout(self._read_timeout)
def execute(commands, client=None, sock=None, fail=True): assert client or sock, 'client or sock is required' if client: conn = client.connection_pool.get_connection('MULTI') conn.send_packed_command([b''.join(commands)]) sock = conn._sock else: sock.sendall(b''.join(commands)) try: errors = [] cnt = len(commands) reader = Reader() while cnt > 0: data = sock.recv(16384) if not data: break # pragma: no cover reader.feed(data) while True: r = reader.gets() if r is False: break if type(r) is ReplyError: errors.append( (str(r), parse_cmd(commands[len(commands) - cnt]))) cnt -= 1 finally: client and client.connection_pool.release(conn) if errors and fail: raise RedisError(*errors[0]) return errors