Skip to main content

Module pool

Module pool 

Source
Expand description

真实的 PostgreSQL 连接池实现,仅在启用 server feature 时编译。 PostgreSQL 连接池实现。

仅在启用 server feature 时编译,使用 deadpool-postgres 管理连接池, 并通过 std::sync::LazyLock 在首次访问时延迟初始化全局连接池。 get_conn 失败时按指数退避 + jitter 重试(见 retry 模块),以应对瞬时连接失败。

启动期的重试窗口更长(见 get_conn_for_startup),并配合 main.rs 的前置校验 (validate_database_url)让所有启动期致命错误走统一友好的 exit(1) 路径。

Statics§

DB_POOL
全局数据库连接池。

Functions§

build_admin_config 🔒
构建 postgres 维护库的连接配置:复用目标 URL 的 host/port/user/password, 仅把 dbname 换成 postgres
build_pg_config 🔒
解析 DATABASE_URL 并注入 statement_timeout,返回配置好的 tokio_postgres::Config
ensure_database
启动期自举:连接 postgres 维护库,确保目标数据库存在(不存在则创建)。
get_conn
从全局连接池获取一个数据库连接,失败时按指数退避 + jitter 重试。
get_conn_for_startup
启动期专用:在可配置的时间窗口内反复尝试连接数据库,专治“DB 还没起来”。
is_simple_ident 🔒
判断字符串是否为 PostgreSQL 简单标识符:^[A-Za-z_][A-Za-z0-9_]*$
validate_database_url
启动早期校验:DATABASE_URL 格式合法 + DB_POOL_SIZE 为正数。