Skip to content

Commit

Permalink
feat: add graceful shutdown
Browse files Browse the repository at this point in the history
  • Loading branch information
thesurlydev committed Apr 16, 2023
1 parent dd8cac3 commit c5f816a
Showing 1 changed file with 28 additions and 0 deletions.
28 changes: 28 additions & 0 deletions src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -62,10 +62,38 @@ async fn serve(app: Router, port: u16) {
tracing::debug!("listening on {}", addr);
axum::Server::bind(&addr)
.serve(app.layer(TraceLayer::new_for_http()).into_make_service())
.with_graceful_shutdown(shutdown_signal())
.await
.unwrap();
}

// graceful shutdown
async fn shutdown_signal() {
let ctrl_c = async {
signal::ctrl_c()
.await
.expect("failed to install Ctrl+C handler");
};

#[cfg(unix)]
let terminate = async {
signal::unix::signal(signal::unix::SignalKind::terminate())
.expect("failed to install signal handler")
.recv()
.await;
};

#[cfg(not(unix))]
let terminate = std::future::pending::<()>();

tokio::select! {
_ = ctrl_c => {},
_ = terminate => {},
}

println!("signal received, starting graceful shutdown");
}


// we can extract the connection pool with `State`
async fn using_connection_pool_extractor(
Expand Down

0 comments on commit c5f816a

Please sign in to comment.