You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Build on the Redis Cluster URL groundwork merged in #22211 to add native
Redis Sentinel support. Cluster URLs stay gated (detection-only) exactly as
in #22211; this change enables the redis+sentinel:// and rediss+sentinel://
schemes across every connection point: the server messaging client, the
RedisLockManager, the RedisDatabase block, and the Docket services URL.
- New prefect_redis.connection module: a shared URL parser (parse_redis_url)
and client builder (build_redis_client) that resolve the current master
through the listed Sentinel daemons and follow failover automatically.
Data-node connections get pinned TCP keepalive so a silently-dead master is
noticed promptly while Sentinel completes failover.
- client.py dispatches redis+sentinel:// URLs to the Sentinel builder while
leaving #22211's cluster NotImplementedError gate intact.
- RedisLockManager and RedisDatabase accept a connection_url that is
authoritative over the scalar host/port fields; RedisDatabase round-trips
Sentinel URLs through from_connection_string and block_info.
- Document the Sentinel schemes on PREFECT_SERVER_DOCKET_URL and bump the
pydocket floor to >=0.22.0 for its Sentinel URL support.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
For a Redis deployment fronted by [Redis Sentinel](https://redis.io/docs/latest/operate/oss_and_stack/management/sentinel/), use the `redis+sentinel://` scheme with a comma-separated list of Sentinel daemons and the master group name. Docket discovers the current master through Sentinel and follows failover automatically:
Use the `rediss+sentinel://` scheme for SSL/TLS. This requires `pydocket>=0.22.0`.
199
+
192
200
<Note>
193
201
The Docket URL can use the same Redis instance as the messaging configuration above, but you may use a different database number (e.g., `/1` instead of `/0`) to keep the data separate.
Copy file name to clipboardExpand all lines: docs/v3/api-ref/settings-ref.mdx
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1691,7 +1691,7 @@ The name of the Docket instance.
1691
1691
`PREFECT_SERVER_DOCKET_NAME`
1692
1692
1693
1693
### `url`
1694
-
The URL of the Redis server to use for Docket.
1694
+
The URL of the Redis server to use for Docket. Supports the memory:// (single-server only), redis://, rediss://, redis+sentinel:// and rediss+sentinel:// schemes; the Sentinel schemes discover the current master through the listed Sentinel daemons and follow failover automatically (requires pydocket>=0.22.0).
Copy file name to clipboardExpand all lines: schemas/settings.schema.json
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -1502,7 +1502,7 @@
1502
1502
},
1503
1503
"url": {
1504
1504
"default": "memory://",
1505
-
"description": "The URL of the Redis server to use for Docket.",
1505
+
"description": "The URL of the Redis server to use for Docket. Supports the memory:// (single-server only), redis://, rediss://, redis+sentinel:// and rediss+sentinel:// schemes; the Sentinel schemes discover the current master through the listed Sentinel daemons and follow failover automatically (requires pydocket>=0.22.0).",
0 commit comments