pub async fn get_conn_for_startup() -> Result<Object, PoolError>Expand description
启动期专用:在可配置的时间窗口内反复尝试连接数据库,专治“DB 还没起来”。
与运行期的 get_conn 区别:
- 没有反雪崩约束:启动时只有这一个进程在连,不会雪崩,可以放心长重试。
- 固定间隔重试(而非指数退避):启动场景下 DB 要么起来要么没起来,
固定 500ms 轮询比指数退避更可预测,也更贴合
pg_isready式的等待语义。 - 以总时长为终止条件(而非次数):对运维更直观——“给 DB 30 秒起来”。
超时窗口由 MIGRATE_STARTUP_TIMEOUT_SECS 控制,默认 30 秒。窗口用尽后返回
最后一次错误,由调用方(main.rs)决定如何向用户报告。
适用 docker-compose(无 healthcheck)、本机忘启 Postgres 等“DB 起得比 app 慢”的场景。