Skip to main content

get_conn_for_startup

Function get_conn_for_startup 

Source
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 慢”的场景。