redis/redis-py · error · NotImplementedError
HELLO is intentionally not implemented in the client.
Error message
HELLO is intentionally not implemented in the client.
What it means
hello is a stub that always raises NotImplementedError. The HELLO command negotiates the RESP protocol version and authentication; redis-py handles protocol negotiation internally (via the protocol parameter on the client/connection) rather than exposing a raw HELLO method, so calling it manually would conflict with the client's own handshake.
Source
Thrown at redis/commands/core.py:2292
) -> list[int] | Awaitable[list[int]]:
"""
This command blocks the current client until all previous write
commands by that client are acknowledged as having been fsynced
to the AOF of the local Redis and/or at least the specified number
of replicas.
For more information, see https://redis.io/commands/waitaof
"""
return self.execute_command(
"WAITAOF", num_local, num_replicas, timeout, **kwargs
)
def hello(self):
"""
This function throws a NotImplementedError since it is intentionally
not supported.
"""
raise NotImplementedError(
"HELLO is intentionally not implemented in the client."
)
def failover(self):
"""
This function throws a NotImplementedError since it is intentionally
not supported.
"""
raise NotImplementedError(
"FAILOVER is intentionally not implemented in the client."
)
@overload
def hotkeys_start(
self: SyncClientProtocol,
metrics: List[HotkeysMetricsTypes],
count: int | None = None,
duration: int | None = None,View on GitHub (pinned to da03cdc7e8)
Solutions
- Set protocol=3 or protocol=2 on the Redis() client/connection constructor to negotiate at connect time.
- Set password/username on the client for authentication instead of HELLO AUTH.
- Use r.execute_command('HELLO', proto) only if you understand the handshake implications.
Example fix
# before r.hello() # after import redis r = redis.Redis(host='localhost', protocol=3) # negotiate RESP3 at connect time
Defensive patterns
Strategy: validation
Validate before calling
# do not call hello(); configure protocol at construction time import redis r = redis.Redis(protocol=3, username=..., password=...)
Prevention
- Protocol negotiation and auth are handled by the client constructor — never call HELLO directly.
- Use the protocol= and credential= kwargs on Redis() to configure RESP2/RESP3.
When it happens
Trigger: Calling r.hello() directly. Auto-generated command wrappers invoking every method. Copying redis-cli HELLO usage into Python.
Common situations: Developer wants to switch protocol versions at runtime. Migrating from another client that exposed HELLO. Testing RESP3 negotiation manually.
Related errors
- Invalid RESP version
- Invalid RESP version
- Maintenance notifications handlers on connection are only su
- protocol must be an integer
- protocol must be either 2 or 3
AI-assisted analysis of redis/redis-py@da03cdc7e8 (2026-08-04).
Data as JSON: /data/errors/f71f65d12e0f57e4.json.
Report an issue: GitHub.