PR #2570 introduced hiredis pack_command mode for sync Redis, but the change never landed for the async counterpart:
|
def pack_command(self, *args: EncodableT) -> List[bytes]: |
|
"""Pack a series of arguments into the Redis protocol""" |
|
output = [] |
|
# the client might have included 1 or more literal arguments in |
|
# the command name, e.g., 'CONFIG GET'. The Redis server expects these |
|
# arguments to be sent separately, so split the first argument |
|
# manually. These arguments should be bytestrings so that they are |
|
# not encoded. |
|
assert not isinstance(args[0], float) |
|
if isinstance(args[0], str): |
|
args = tuple(args[0].encode().split()) + args[1:] |
|
elif b" " in args[0]: |
|
args = tuple(args[0].split()) + args[1:] |
|
|
|
buff = SYM_EMPTY.join((SYM_STAR, str(len(args)).encode(), SYM_CRLF)) |
|
|
|
buffer_cutoff = self._buffer_cutoff |
|
def pack_commands(self, commands: Iterable[Iterable[EncodableT]]) -> List[bytes]: |
|
"""Pack multiple commands into the Redis protocol""" |
|
output: List[bytes] = [] |
|
pieces: List[bytes] = [] |
|
buffer_length = 0 |
|
buffer_cutoff = self._buffer_cutoff |
|
|
|
for cmd in commands: |
|
for chunk in self.pack_command(*cmd): |
would love to see pack_command support landed for asyncio Redis too.
PR #2570 introduced hiredis pack_command mode for sync Redis, but the change never landed for the async counterpart:
redis-py/redis/asyncio/connection.py
Lines 827 to 843 in d762623
redis-py/redis/asyncio/connection.py
Lines 873 to 881 in d762623
would love to see pack_command support landed for asyncio Redis too.