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为正数。