增加优雅停机

This commit is contained in:
胡天 2024-02-02 11:33:34 +08:00
parent da22405c3e
commit d40998f917
1 changed files with 26 additions and 1 deletions

View File

@ -3,6 +3,7 @@ use std::sync::Arc;
use axum::Router;
use axum::routing::get;
use sqlx::mysql::MySqlPoolOptions;
use tokio::signal;
use axum_sqlx::{config::AppConfig, handler, model::state::AppState};
@ -40,5 +41,29 @@ async fn main() {
tracing::info!("服务器运行于: {}", listener.local_addr().unwrap());
axum::serve(listener, app).await.unwrap()
axum::serve(listener, app).with_graceful_shutdown(shutdown_signal()).await.unwrap()
}
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 => {},
}
tracing::info!("signal received, starting graceful shutdown");
}