routing

Configuration classes for read/write replica routing.

RoutingConfig

class advanced_alchemy.config.routing.RoutingConfig[source]

Bases: object

Read/Write routing configuration.

This configuration enables automatic routing of database operations to different engine groups (e.g., writer, reader, analytics).

primary_connection_string: str | None = None

Connection string for the primary (write) database. Mapped to engines[default_group].

Type:

Legacy

read_replicas: list[str | EngineConfig]

Read replica connection strings or configs. Mapped to engines[read_group].

Type:

Legacy

engines: dict[str, list[str | EngineConfig]]

Dictionary mapping group names to lists of engine configs.

Example

{
    "writer": ["postgres://primary"],
    "reader": ["postgres://rep1", "postgres://rep2"],
    "analytics": ["postgres://warehouse"]
}
__init__(primary_connection_string=None, read_replicas=<factory>, engines=<factory>, default_group='default', read_group='read', routing_strategy=RoutingStrategy.ROUND_ROBIN, enabled=True, sticky_after_write=True, reset_stickiness_on_commit=True)
Parameters:
Return type:

None

default_group: str = 'default'

Name of the group to use for write operations.

read_group: str = 'read'

Name of the group to use for read operations.

routing_strategy: RoutingStrategy = 1

Strategy for selecting engines within a group.

enabled: bool = True

Enable/disable routing.

sticky_after_write: bool = True

Stick to writer after first write in context (read-your-writes).

reset_stickiness_on_commit: bool = True

Reset stickiness after commit.

__post_init__()[source]

Normalize configuration.

Return type:

None

get_engine_configs(group)[source]

Get engine configs for a specific group.

Parameters:
  • group (str) – Name of the engine group.

  • group (str)

Return type:

list[EngineConfig]

Returns:

List of EngineConfig instances.

ReplicaConfig

advanced_alchemy.config.routing.ReplicaConfig

alias of EngineConfig

RoutingStrategy

class advanced_alchemy.config.routing.RoutingStrategy[source]

Bases: Enum

Strategy for selecting engines from a group.

Determines how the routing layer chooses which engine to use when multiple engines are configured for a routing group.

ROUND_ROBIN = 1

Cycle through engines in order.

RANDOM = 2

Select engines randomly.